Spring中BeanFactory獲取Java Bean
1、id JavaBean在BeanFactory中的***標(biāo)識(shí),代碼中通過(guò)BeanFactory獲取Java Bean實(shí)例時(shí)需以此作為索引名稱。
2、class Java Bean 類名
3、singleton 指定此Java Bean是否采用單例(Singleton)模式,如果設(shè)為“true”,則在BeanFactory作用范圍內(nèi),只維護(hù)此Java Bean的一個(gè)實(shí)例,代碼通過(guò)BeanFactory獲得此Java Bean實(shí)例的引用。反之,如果設(shè)為“false”,則通過(guò)BeanFactory獲取Java Bean實(shí)例時(shí),BeanFactory每次都將創(chuàng)建一個(gè)新的實(shí)例返回。
4、init-method 初始化方法,此方法將在BeanFactory創(chuàng)建JavaBean實(shí)例之后,在向應(yīng)用層返回引用之前執(zhí)行。一般用于一些資源的初始化工作。
5、destroy-method 銷毀方法。此方法將在BeanFactory銷毀的時(shí)候執(zhí)行,一般用于資源釋放。
6、depends-on Bean依賴關(guān)系。一般情況下無(wú)需設(shè)定。Spring會(huì)根據(jù)情況組織各個(gè)依賴關(guān)系的構(gòu)建工作(這里示例中的depends-on屬性非必須)。只有某些特殊情況下,如JavaBean中的某些靜態(tài)變量需要進(jìn)行初始化(這是一種BadSmell,應(yīng)該在設(shè)計(jì)上應(yīng)該避免)。通過(guò)depends-on指定其依賴關(guān)系可保證在此Bean加載之前,首先對(duì)depends-on所指定的資源進(jìn)行加載。
7、 通過(guò)節(jié)點(diǎn)可指定屬性值。BeanFactory將自動(dòng)根據(jù)Java Bean對(duì)應(yīng)的屬性類型加以匹配。下面的”desc”屬性提供了一個(gè)null值的設(shè)定示例。注意代表一個(gè)空字符串,如果需要將屬性值設(shè)定為null,必須使用節(jié)點(diǎn)。
8、指定了屬性對(duì)BeanFactory中其他Bean的引用關(guān)系。示例中,TheAction的dataSource屬性引用了id為dataSource 的Bean。BeanFactory將在運(yùn)行期創(chuàng)建dataSource bean實(shí)例,并將其引用傳入TheAction Bean的dataSource屬性。
下面的代碼演示了如何通過(guò)BeanFactory獲取Java Bean實(shí)例: InputStream is = new FileInputStream("bean.xml"); XmlBeanFactory factory = new XmlBeanFactory(is); Action action = (Action) factory.getBean("TheAction"); 此時(shí)我們獲得的Action實(shí)例,由BeanFactory進(jìn)行加載,并根據(jù)配置文件進(jìn)行了初始化和屬性設(shè)定。
【編輯推薦】