領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多Spring 2.5 的核心主題之一是全面的基於註解的配置。我們已經討論和撰寫了很多關於 **@Autowired**、Spring MVC 的 **@RequestMapping** 以及對使用 JUnit4 或 TestNG 編寫的註解測試的新支援。**@Autowired** 毫無疑問是 Spring 2.5 註解的核心,可用於服務元件、Web 元件、單元測試——甚至在使用 Spring 的 **@Configurable** 和 AspectJ weaving 時也可以用於領域物件。Spring MVC 的 **@RequestMapping** 也同樣靈活,支援多種 handler 方法簽名變體。
今天我想換個重點,namely,介紹Spring所支援的廣泛的依賴注入註解。下面的列表包含了可在Spring 2.5 bean中使用的關鍵註解
這組註解包含了Java EE 5的所有通用註解,這意味著您可以在例如Servlet 2.5 servlets、JSF 1.2 managed beans和Spring managed beans中使用相同的通用註解。換句話說,如果您有一些使用註解的標準的JSF 1.2 managed beans,您可以直接將它們從faces-config移動到Spring應用程式上下文中,而無需更改bean類!這是一個重要的設計目標:Spring 2.5可以透過選擇SpringBeanFacesELResolver作為自定義JSF ELResolver,直接替換標準的JSF 1.2 managed bean功能。
在配置方面,您需要的所有操作,以啟用上述完整的註解集,是在您的Spring應用程式上下文中新增以下簡單的配置元素:
<context:annotation-config/>
請注意,此設定僅與依賴注入相關,不需要任何引數化。(如需自定義,請考慮定義Spring的individual AnnotationBeanPostProcessors,例如CommonAnnotationBeanPostProcessor)。但是,annotation-config元素不會啟用任何型別的代理或特殊匯出。出於這些目的,Spring提供了更具體的配置元素:
<tx:annotation-driven/>
此設定啟用事務註解的處理,Spring 2.5開箱即用地支援以下兩種變體:
題外話:與Spring的所有支援選項一樣,EJB 3.0 TransactionAttribute註解僅在EJB 3.0 API實際存在於類路徑中時才可用。Spring會自動適應該API的存在,類似於JSR-250 API或JPA API(如上所述)。
<tx:annotation-driven>元素允許進行事務特定的配置,例如要連線的Spring PlatformTransactionManager(透過“transaction-manager”屬性)以及要操作的模式。
<tx:annotation-driven transaction-manager="myTm" mode="aspectj"/>
Spring 2.5中新增的顯式AspectJ模式事務註解處理,允許使用Spring的AnnotationTransactionAspect而不是傳統的AOP代理。這需要AspectJ編譯時織入或載入時織入,修改恰好使用@Transactional註解的類的位元組碼。這種織入允許註解在任何型別的方法上生效:無論是public、protected還是private——無論是外部呼叫還是物件內部的呼叫——事務都會按照註解的指定進行。這與傳統的AOP代理形成鮮明對比,在後者中,註解驅動的事務僅限於透過代理的public方法呼叫。
如果您的環境支援載入時織入,則以下配置足以啟用AspectJ風格的事務註解處理。請注意,這需要一個具有內建織入支援的執行時環境(例如WebLogic 10、OC4J 10.1.3.1、配置了Spring的TomcatInstrumentableClassLoader的Tomcat)或在JVM啟動時指定Spring的VM代理(“-javaagent:spring-agent.jar”)。
<context:load-time-weaver/><tx:annotation-driven mode="aspectj"/>
<bean id="transactionManager" class="..."/>
最後,Spring 2.5還提供了一個方便的配置元素來啟用JMX匯出。預設的MBeanServer將在所有常見平臺自動檢測,包括標準的Java 5平臺MBeanServer以及WebLogic 9/10和WebSphere 6暴露的特殊MBeanServer。
<context:mbean-export/>
Spring管理的bean可以實現標準的MBean/MXBean約定,根據JMX規範被認定為MBean類,或者使用以下註解來宣告其管理簽名(自Spring 1.2起已知):
這表明了Spring註解配置模型的真正強大之處:不同的配置關注點無縫地合併為一個統一的整體,具有一致的配置風格和統一的元件生命週期——它們仍然是標準Spring bean,由Spring ApplicationContext管理!
以上就是對Spring核心配置註解的簡要介紹。如果您有興趣瞭解Spring 2.5的新特性以及它們如何協同工作,我邀請您參加本週三的Spring 2.5網路研討會,我將在會上涵蓋Spring 2.5的所有關鍵功能領域,從Java 6支援到基於註解的配置!