?
本文檔使用 PHP中文網(wǎng)手冊 發(fā)布
Spring 2.0 相當大的改進之一就是Spring的IoC容器。
Spring上個版本的IoC容器支持兩個不同的bean作用域(單例與原型)。Spring 2.0改進了這一點,不僅提供了一些依賴于Spring部署環(huán)境(比如說,在web環(huán)境中的request和session作用域bean)的額外的作用域,而且提供了所謂的'鉤子'('hooks')(因為找不到更好的表達)使Spring用戶可以創(chuàng)造自己的作用域。
應該注意的是,即使單例與原型作用域beans的基本(內(nèi)在)實現(xiàn)發(fā)生了變化,上述變化對最終用戶來說是透明的...現(xiàn)有的配置不需要改變或放棄。
在標題為 第?3.4?節(jié) “Bean的作用域” 的部分有對新增的作用域與原有作用域的詳細描述。
多虧了新的基于XML Schema的XML配置語法的產(chǎn)生,Spring的XML配置變的更加簡單了。如果你想充分利用Spring提供的新標簽(Spring團隊當然建議你這么做,因為他們使配置變的不再繁瑣,更加易于閱讀),請閱讀標題為 附錄?A, XML Schema-based configuration 的部分。
相關提示,有一個新的更新過的Spring 2.0的DTD。如果你不能使用基于Schema的XML配置,你可以使用它。下面給出了DOCTYPE聲明,如果有興趣的讀者可以詳細閱讀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配置不僅更加易于書寫,而且也具有可擴展性。
這里'可擴展性'的含義是,作為一個應用程序開發(fā)人員,或著(更可能)作為第三方框架或產(chǎn)品的供應商,可以開發(fā)自定義標簽,供其他開發(fā)人員把這些標簽嵌入到自己的Spring配置文件里。你可以在組件的特定配置中定義你自己的DSL(domain specific language,這個詞在這里用得比較寬泛)。
對于開發(fā)人員或者在項目中運用Spring的企業(yè)架構(gòu)師來說,實現(xiàn)自定義Spring標簽可能不是每個人都感興趣的。我們期待著第三方供應商能夠?qū)﹂_發(fā)在Spring配置文件里使用的自定義配置標簽予于足夠的關注。
可擴展的配置機制在 附錄?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ū)動的bean 配置在第?3.11?節(jié) “基于注解(Annotation-based)的配置”中討論。也請查閱對Spring MVC的annotation的支持第?2.5.3?節(jié) “基于Annotation的控制器”。
Spring2.5 引入了組件搜索功能:在classpath中自動搜索帶有annotation的組件。典型的,下列組件類會注解為stereotype: @Component
,
@Repository
, @Service
,
@Controller
. 取決于程序的上下文配置,這些組件會被自動搜索到,并且轉(zhuǎn)變?yōu)镾pring bean定義,而不需要為每個類都進行明確的配置。
Annotation-driven bean configuration is discussed in 第?3.12.1?節(jié) “@Component
和更多典型化注解”.
Annotation驅(qū)動的bean配置在第?3.12.1?節(jié) “@Component
和更多典型化注解”討論。