本文實例講述了Spring Bean基本管理。分享給大家參考,具體如下:
一、使用setter方式完成依賴注入
下面是Bean和beans-config.xml檔。
public class HelloBean { private String helloWord; //...省略getter、setter方法}
<?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="helloBean" > <property name="helloWord"> <value>Hello!Justin!</value> </property> </bean> </beans>
public class SpringDemo { public static void main(String[] args) { Resource rs = new FileSystemResource("beans-config.xml"); BeanFactory factory = new XmlBeanFactory(rs); HelloBean hello = (HelloBean) factory.getBean(Factory(rs); HelloBean hello = (HelloBean) factory.getBean(Factory(rs); HelloBean hello = (HelloBean) factory.getBean( helloBean"); System.out.println(hello.getHelloWord()); } }
二、使用constructor方式完成註入
public class HelloBean { private String name; private String helloWord; // 建議有要無參數建構方法public HelloBean() { } public HelloBean(String name, String helloWord) { this.name = name; this.helloWord = helloWord } //...省略getter、setter方法}
<?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="helloBean" > <constructor-arg index="0"> <value>Justin</value> </constructor-arg> <constructor-arg index="1"> <value>Hello</value> </constructor-arg> </bean> </beans>
public class SpringDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext("beans-config.xml"); HelloBean hello = (HelloBean) context.getBean("helloBean"); System.out.print"); System. ("Name: "); System.out.println(hello.getName()); System.out.print("Word: "); System.out.println(hello.getHelloWord()); } }
三、屬性參考
public class HelloBean { private String helloWord; private Date date; //...省略getter、setter方法}
<beans> <bean id="dateBean"/> <bean id="helloBean"> <property name="helloWord"> <value>Hello!</value> </property> <property name="date"> < ref bean="dateBean"/> </property> </bean> </beans>
public class SpringDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext("beans-config.xml"); HelloBean hello = (HelloBean) context.getBean("helloBean"); System.out.print"); System. (hello.getHelloWord()); System.out.print(" It's "); System.out.print(hello.getDate()); System.out.println("."); } }
四、「byType」自動綁定
將「三」中的設定檔改為下面,即可完成bean屬性的按類型自動綁定。
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="byType"> <property name="helloWord"> <value>Hello!</value> </property> </bean> </beans>
五、「byName」自動綁定
將「三」中的設定檔改為下面,即可完成bean屬性的依名稱自動綁定。
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="byName"> <property name="helloWord"> <value>Hello!</value> </property> </bean> </beans>
六、「constructor」自動綁定
將「三」中的設定檔改為下面,即可完成bean屬性的依構造方法自動綁定。在建立依賴關係時,Srping容器會試圖比對容器中的Bean實例類型,及相關的構造方法上的參數類型,看看在類型上是否符合,如果有的話,則選用該構造方法來建立Bean實例。如果無法綁定,則拋出org.springframework.beans.factory.UnsatisfiedDependencyException異常。
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="constructor"> <property name="helloWord"> <value>Hello!</value> </property> </bean> </beans>
六、「autodetect」自動綁定
將「三」中的設定檔改為下面,即可完成bean屬性的自動綁定,這個自動綁定是Spring會嘗試用入constructor來處理依賴關係的建立,如果不行,則再嘗試用byType類別建立依賴關係。
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="autodetect"> <property name="helloWord"> <value>Hello!</value> </property> </bean> </beans>
七、依賴檢查方式
在自動綁定中,由於沒辦法從定義檔中,清楚地看到是否每個屬性都完成設定,為了確定某些依賴關係確實建立,您可以假如依賴檢查,在<bean>標籤使用時設定"dependency-check",可以有四種依賴檢查方式:simple、objects、all、none。
simple:只檢查簡單的類型(像原生資料類型或字串物件)屬性是否完成依賴關係,。
objects:檢查物件類型的屬性是否完成依賴關係。
all:則檢查全部的屬性是否完成依賴關係。
none:設定是預設值,表示不檢查依賴性。
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="autodetect" dependeny-check="all"> <property name="helloWord"> <value>Hello!</value> < /property> </bean> </beans>
八、集合物件注入
對於像數組、List、Set、Map等集合對象,在註入前必須填充一些對象至集合中,然後再將集合對象注入至所需的Bean時,也可以交由Spring的IoC容器來自動維護或生成集合對象,並完成依賴注入。
public class SomeBean { private String[] someStrArray; private Some[] someObjArray; private List someList; private Map someMap; public String[] getSomeStrArray() { return someArsomeArsome) }, publicoid sea; someStrArray; } public Some[] getSomeObjArray() { return someObjArray; } public void setSomeObjArray(Some[] someObjArray) { this.someObjArray = someObjArLister } public List List List( this.someList = someList; } public Map getSomeMap() { return someMap; } public void setSomeMap(Map someMap) { this.someMap = someMap; } }public class Some { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return name; } }
<?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="some1"> <property name="name"> <value>Justin</value> </property> </bean> <bean id="some2"> <property name="name"> <value>momor</value> </property> </bean> <bean id="someBean"> <property name="someStrArray "> <list> <value>Hello</value> <value>Welcome</value> </list> </property> <property name="someObjArray"> <list> <ref bean="some1"/> <ref bean="some2"/> </list> </property> <property name="someList"> <list> <value>ListTest</value> <ref bean=" some1"/> <ref bean="some2"/> </list> </property> <property name="someMap"> <map> <entry key="MapTest"> <value>Hello!Justin!</value> </entry> <entry key="someKey1"> <ref bean="some1"/> </entry> </map> </property> </bean> </ beans>
public class SpringDemo { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "beans-config.xml"); SomeBean someBean = (SomeBean) context.getBean("someBean");態依賴注入物件String[] strs = (String[]) someBean.getSomeStrArray(); Some[] somes = (Some[]) someBean.getSomeObjArray(); for(int i = 0; i < strs.length; i++) { System.out.println(strs[i] + " ," + somes[i].getName()); } // 取得List型態依賴注入物件System.out.println(); List someList = (List) someBean.getSomeList(); for(int i = 0; i < someList.size(); i++) { System.out.println(someList.get(i)); } // 取得Map類型態依賴注入物件System.out.println(); Map someMap = (Map) someBean.getSomeMap(); System.out.println(someMap.get("MapTest")); System.out.println(someMap.get("someKey1")); } }
希望本文所述對大家Java程式設計有幫助。