Java代碼
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>
這裡在配置bean的時候都指明了id,id是這個bean在配置檔案中的唯一辨別,當然也可以使用name,下面說說它們之間的差別:
id屬性是在配置檔案中辨別Bean的,name屬性則可以用來指定這個Bean的别名。因為XML規範對于id的合法字元有嚴格的規定,是以當用非法字元來配置id時候就不行了,這個時候可以通過name屬性來解決。同時通過name屬性可以指定多個id,這些id要用都好或者分号分割。
正如上面的代碼中提到的格式
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
id屬性用來表示整個bean,class屬性用來表示這個bean真正代表的類,它是由路徑加;類名組成。
在Spring中,Bean可以被定義為兩種模式:單例模式和非單例模式(singleton or non-singleton)。而Spring預設的是單例模式,何謂單例模式,就是這個Bean隻有一個執行個體存在,而不管有多少個對這個Bean的請求。而非單例模式則回在每次對這個Bean的請求中産生新的執行個體。簡單的說就是:singleton隻會被new一次,而non-singleton卻在每次請求的時候都new一次。這就是差別。
上面提到,Spring中,Bean預設的模式是單例模式,我們來看看它的代碼:
Java代碼
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>
當然我們可以顯式的配置為singleton模式
Java代碼
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" singleton="true">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" singleton="true">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>
而要改為non-singleton模式則把singleton屬性改為false就行了
在Spring的配置檔案中,我們完成了對類的屬性的注入:看看下面的代碼:
Java代碼
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <bean>
10. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>
這裡的propeity标簽對應于類中的屬性,但是如何對其注入null值呢:
看看下面的代碼:
Java代碼
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <value>null</value>
8. </property>
9. <bean>
10. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>null</value>
</property>
<bean>
</beans>
或者
Java代碼
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
6. <property name ="message">
7. <null/>
8. </property>
9. <bean>
10. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<null/>
</property>
<bean>
</beans>
配置同樣非常友善
下面我們來看看如何實作依賴 depends-on
先看一下代碼
Java代碼
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
3. "http://www.springframework.org/dtd/spring-beans.dtd">
4. <beans>
5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" depends="date">
6. <property name ="message">
7. <value>HelloWorld</value>
8. </property>
9. <property name ="date">
10. <ref local="date"/>
11. </property>
12. <bean>
13. <bean id="date" class="java.util.Date">
14. </beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" depends="date">
<property name ="message">
<value>HelloWorld</value>
</property>
<property name ="date">
<ref local="date"/>
</property>
<bean>
<bean id="date" class="java.util.Date">
</beans>
在這裡我們在調用HelloWorld之前我們就必須調用date,對date進行初始化。這就是depends-on的工作方式。