領先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多Spring 2.5 背後的核心主題之一是完整的基於註解的配置。我們一直在討論和撰寫關於 @Autowired、Spring MVC 的 @RequestMapping 以及使用 JUnit4 或 TestNG 編寫的註解測試的新支援的文章。 @Autowired 肯定是 Spring 2.5 的核心註解之一,可用於服務元件、Web 元件、單元測試 - 甚至在使用 Spring 的 @Configurable 進行 AspectJ 織入時的領域物件。 Spring MVC 的 @RequestMapping 同樣靈活,支援處理方法簽章的多種變體。
今天我想關注不同的重點,即 Spring 支援的廣泛的依賴注入註解集合。 以下清單包含可在 Spring 2.5 bean 中使用的關鍵註解
這組註解涵蓋了所有 Java EE 5 的通用註解,這表示您可以在 Servlet 2.5 servlet、JSF 1.2 受管理 bean 和 Spring 受管理 bean 中使用相同的通用註解。 換句話說,如果您有一些使用註解的標準 JSF 1.2 受管理 bean,您可以按原樣取得它們,並將它們的定義從 faces-config 移至 Spring 應用程式內容,而 bean 類別中不會有任何變更! 這是一個重要的設計目標:Spring 2.5 可以作為標準 JSF 1.2 受管理 bean 機制的簡單替代方案,只需選擇 SpringBeanFacesELResolver 作為您的自訂 JSF ELResolver 即可。
在配置方面,您需要做的就是啟用上述所有註解,即在您的 Spring 應用程式內容中使用以下簡單配置元素
<context:annotation-config/>
請注意,此設定僅與依賴注入相關,不需要任何參數化。 (若要進行自訂,請考慮改為定義 Spring 的個別 AnnotationBeanPostProcessors,例如 CommonAnnotationBeanPostProcessor)。 但是,annotation-config 元素不會啟用任何類型的代理或特殊匯出。 對於此類目的,Spring 提供了更具體的配置元素
<tx:annotation-driven/>
此設定會啟用交易註解的處理,Spring 2.5 中預設支援以下兩種變體
附註:與所有 Spring 的支援選項一樣,只有當 EJB 3.0 API 實際存在於類別路徑中時,EJB 3.0 TransactionAttribute 註解才可用。 Spring 會自動適應該 API 的存在,類似於 JSR-250 API 或 JPA API (如上所述)。
<tx:annotation-driven> 元素允許進行交易特定配置,例如與之通訊的 Spring PlatformTransactionManager (透過「transaction-manager」屬性) 和運作的模式
<tx:annotation-driven transaction-manager="myTm" mode="aspectj"/>
交易註解處理的明確 AspectJ 模式是 Spring 2.5 中的新增功能,允許使用 Spring 的 AnnotationTransactionAspect 而不是傳統的 AOP 代理。 這需要 AspectJ 編譯時織入或載入時織入,以修改恰好使用 @Transactional 註解的類別的位元組碼。 這種織入允許支援任何類型方法上的註解:無論是公開、受保護或私有 - 無論是外部呼叫還是物件內的呼叫 - 交易始終會按照註解中的指定啟動。 這與傳統的 AOP 代理形成鮮明對比,在傳統的 AOP 代理中,基於註解驅動的交易僅限於透過代理傳入的公開方法呼叫。
如果您的環境能夠進行載入時織入,則以下配置足以啟用 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 支援到基於註解的配置!