?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
Spring 2.0 相當(dāng)大的改進(jìn)之一就是Spring的IoC容器。
Spring上個(gè)版本的IoC容器支持兩個(gè)不同的bean作用域(單例與原型)。Spring 2.0改進(jìn)了這一點(diǎn),不僅提供了一些依賴于Spring部署環(huán)境(比如說,在web環(huán)境中的request和session作用域bean)的額外的作用域,而且提供了所謂的'鉤子'('hooks')(因?yàn)檎也坏礁玫谋磉_(dá))使Spring用戶可以創(chuàng)造自己的作用域。
應(yīng)該注意的是,即使單例與原型作用域beans的基本(內(nèi)在)實(shí)現(xiàn)發(fā)生了變化,上述變化對最終用戶來說是透明的...現(xiàn)有的配置不需要改變或放棄。
在標(biāo)題為 第?3.4?節(jié) “Bean的作用域” 的部分有對新增的作用域與原有作用域的詳細(xì)描述。
多虧了新的基于XML Schema的XML配置語法的產(chǎn)生,Spring的XML配置變的更加簡單了。如果你想充分利用Spring提供的新標(biāo)簽(Spring團(tuán)隊(duì)當(dāng)然建議你這么做,因?yàn)樗麄兪古渲米兊牟辉俜爆?,更加易于閱讀),請閱讀標(biāo)題為 附錄?A, XML Schema-based configuration 的部分。
相關(guān)提示,有一個(gè)新的更新過的Spring 2.0的DTD。如果你不能使用基于Schema的XML配置,你可以使用它。下面給出了DOCTYPE聲明,如果有興趣的讀者可以詳細(xì)閱讀Spring 2.0發(fā)布包的
'dist/resources'
目錄中的'spring-beans-2.0.dtd'
DTD。
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
XML配置不僅更加易于書寫,而且也具有可擴(kuò)展性。
這里'可擴(kuò)展性'的含義是,作為一個(gè)應(yīng)用程序開發(fā)人員,或著(更可能)作為第三方框架或產(chǎn)品的供應(yīng)商,可以開發(fā)自定義標(biāo)簽,供其他開發(fā)人員把這些標(biāo)簽嵌入到自己的Spring配置文件里。你可以在組件的特定配置中定義你自己的DSL(domain specific language,這個(gè)詞在這里用得比較寬泛)。
對于開發(fā)人員或者在項(xiàng)目中運(yùn)用Spring的企業(yè)架構(gòu)師來說,實(shí)現(xiàn)自定義Spring標(biāo)簽可能不是每個(gè)人都感興趣的。我們期待著第三方供應(yīng)商能夠?qū)﹂_發(fā)在Spring配置文件里使用的自定義配置標(biāo)簽予于足夠的關(guān)注。
可擴(kuò)展的配置機(jī)制在 附錄?B, Extensible XML authoring 里有更充分的描述。
Spring 2.0 引入了一些用于配置的annotation, 包括 @Transactional
,
@Required
and @PersistenceContext
/@PersistenceUnit
.
Spring 2.5 引入了用于配置的完整的Annotation集合: @Autowired
,以及對JSR-250注解@Resource
,
@PostConstruct
and @PreDestroy
的支持。
Annotation驅(qū)動(dòng)的bean 配置在第?3.11?節(jié) “基于注解(Annotation-based)的配置”中討論。也請查閱對Spring MVC的annotation的支持第?2.5.3?節(jié) “基于Annotation的控制器”。
Spring2.5 引入了組件搜索功能:在classpath中自動(dòng)搜索帶有annotation的組件。典型的,下列組件類會(huì)注解為stereotype: @Component
,
@Repository
, @Service
,
@Controller
. 取決于程序的上下文配置,這些組件會(huì)被自動(dòng)搜索到,并且轉(zhuǎn)變?yōu)镾pring bean定義,而不需要為每個(gè)類都進(jìn)行明確的配置。
Annotation-driven bean configuration is discussed in 第?3.12.1?節(jié) “@Component
和更多典型化注解”.
Annotation驅(qū)動(dòng)的bean配置在第?3.12.1?節(jié) “@Component
和更多典型化注解”討論。