上一篇學習了IOC的概念並初步分析了實現原理,這篇主要學習Spring的配置,話很少說,讓咱們開始!java
看一個最基本的bean配置mysql
<bean name="hello" class="com.yuanqinnan.test.HelloWorld"></bean>
上面的配置中,咱們將bean交給spring管理,看其中屬性字段:web
class:被管理對象的完整類名spring
name:被管理對象的名稱,能夠經過名稱獲取改對象(能夠重複,可使用特殊字符)sql
id:與name做用相同(不能夠重複,不可使用特殊字符)數組
scope屬性session
singleton:定義bean的範圍爲每一個Spring容器一個實例(默認值)app
prototype:定義bean能夠被屢次實例化(使用一次就建立一次)函數
request:定義bean的範圍是HTTP請求,只有再使用有web能力的spring上下文時有效。學習
request:定義bean的範圍是HTTP請求,只有再使用有web能力的spring上下文時有效。
global-session:定義bean的範圍是全局HTTP會話,只有再portlet上下文中有效。
生命週期屬性
init-method:配置一個方法做爲生命週期初始化方法.spring會在對象建立以後當即調用.
destory-method:配置一個方法做爲生命週期的銷燬方法.spring容器在關閉並銷燬全部容器中的對象以前調用.
代碼以下
<bean id="hello" init-method="getInfo" destroy-method="destory" class="com.yuanqinnan.test.HelloWorld"> </bean>
注意,只有singleton的bean,destory-method纔有效
使用類構造器實例化(默認無參數)
<bean id="hello" class="com.yuanqinnan.test.HelloWorld"> </bean>
使用靜態工廠方法實例化(簡單工廠模式)
public class HellowWorldFactory { public static HelloWorld createHellowWorld(){ return new HelloWorld(); } }
<bean name="hello2" class="com.yuanqinnan.test.HellowWorldFactory" factory-method="createHellowWorld"> </bean>
使用實例工廠方法實例化(工廠方法模式)
public class HellowWorldFactory2 { public HelloWorld createHellowWorld(){ return new HelloWorld(); } }
<bean id="HellowWorldFactory2" class="com.yuanqinnan.test.HellowWorldFactory2"/> <bean id="hello3" factory-bean="HellowWorldFactory2" factory-method="createHellowWorld" />
spring 容許多個文件進行配置,能夠按照模塊來進行配置
<import resource="applicationContext2.xml"></import>
<bean>元素的<property>子元素指明瞭使用它們的set方法來注入,可使用property的value屬性來注入簡單類型
<bean name="user" class="com.yuanqinnan.test.User"> <!--值類型注入--> <property name="age" value="18"></property> <property name="name" value="tom"></property> <!-- 引用類型注入--> <property name="car" ref="car"></property> </bean> <bean name="car" class="com.yuanqinnan.test.Car"> <property name="color" value="blue"></property> </bean>
User類與Car類代碼就不貼了,應該是能夠看得懂。
使用constructor-arg來完成構造方法的注入,注入的方式和setter方式注入相同。 能夠經過type屬性,控制注入的類型 能夠經過index屬性,控制注入的順序 能夠經過name屬性,控制注入的名字
<bean name="user2" class="com.yuanqinnan.test.User"> <constructor-arg name="name" index="0" type="java.lang.String" value="lucy"></constructor-arg> <constructor-arg name="age" index="1" type="java.lang.Integer" value="20"></constructor-arg> <constructor-arg name="car" ref="car"></constructor-arg> </bean>
<bean name="user3" class="com.yuanqinnan.test.User"> <property name="name" value="#{user.name}"></property> <property name="age" value="#{user2.age}"></property> <!-- 引用類型注入 爲car屬性注入下方配置的car對象--> <property name="car" ref="car"></property> </bean>
<property name="arr"> <array> <value>tom</value> <value>lucy</value> <ref bean="user2"></ref> </array> </property>
<property name="list"> <list> <value>tom</value> <value>lucy</value> <ref bean="user2"></ref> </list> </property>
<property name="set"> <set> <value>com.jbdc.mysql.Driver</value> <value>root</value> <ref bean="user"/> </set> </property>
<property name="map"> <map> <entry key="url" value=""></entry> <entry key="user" value-ref="user"></entry> <entry key-ref="user3" value-ref="user2"></entry> </map> </property>
<property name="prop"> <props> <prop key="url">com.jbdc.mysql.Driver</prop> <prop key="userName">root</prop> <prop key="password">1234</prop> </props> </property>
總結:以上是spring的配置詳解,都是經過XML裝配,下一篇咱們學習註解配置