国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Spring Framework中的AOP之around通知

2019-11-18 15:40:54
字體:
來源:轉載
供稿:網友

  在本系列的第一部分,我介紹了如何實現面向方面領域的“HelloWorld”:跟蹤和記錄方面。利用SPRing框架所提供的面向方面編程(aspect-Oriented Programming,AOP)功能,您看到了如何使用before-、after-和基于異常的通知,以及如何使用基于正則表達式的簡單切入點。
跟蹤和記錄方面提供了非常不錯的上手例子,而本文將進一步介紹一種新的通知形式:around通知。

  比起第一部分中介紹的那些通知類型,around形式的通知是一種更具侵入性也更強大的面向對象概念。本文將描述around通知的每個特性,以便您可以在自己的Spring AOP應用程序中正確地使用它。在本文最后,我將向您展示如何使用around通知來截獲和改變應用程序中各個特性相互作用的方式,以便實現CUCkoo's Egg(杜鵑的蛋)面向方面設計模式。

  概述Spring AOP、IoC和代理

  在第一部分,我們快速瀏覽了Spring的一些AOP特性,而沒有闡明Spring如何實現AOP的細節。要理解Spring框架如何運轉,尤其是它如何實現其AOP功能,首先您要明白,Spring是一個依靠于控制反轉(Inversion of Control,IoC)設計模式的輕量級框架。

  注重:本文的目的不是要深入介紹IoC模式,介紹IoC只是為了使您明白該設計模式是如何影響Spring AOP實現的。有關IoC模式的更具體的介紹請參見本文末尾的參考資料。

  IoC設計模式的出現已經有一段時間了。一個最明顯的例子就是J2EE架構本身。隨著企業開發尤其是J2EE平臺的出現,應用程序開始依靠于由外部容器所提供的一些特性,比如bean創建、持久性、消息傳遞、會話以及事務治理。

  IoC引入了一個新概念:由組件構成的框架,它與J2EE容器有許多類似之處。IoC框架分離了組件所依靠的功能,并且,根據Sam Newman文章中的說法,提供了“連接組件的‘膠水’”。

  對組件所依靠特性的控制 被反轉 了,這樣外部框架就可以盡可能透明地提供這些特性了。IoC模式真正意識到了從傳統的由依靠于功能的組件來負責這些功能,到由獨立的框架來配置和提供這些功能的方式轉變。

  圖1顯示了一些構成IoC模式的不同組件角色的例子。

Spring Framework中的AOP之around通知(圖一)
圖1. 沒有對BusinessLogic bean應用方面時的順序圖.

  圖字:

  Component:組件

  Provides Facilities:提供功能

  Relies on and conforms to:依靠于并服從

  Manages the services the framework can then use to provide facilities:治理框架隨后可以用來提供功能的服務

  Service:服務

  Your Component:您的組件

  IoC Framework:IoC框架

  External services:外部服務

  IoC模式使用3種不同的方法來解除組件與服務控制的耦合:類型1、類型2和類型3。

  • 類型1:接口注入
    這是大部分J2EE實現所使用的方法。組件顯式地服從于一組接口,帶有關聯的配置元數據,以便答應框架對它們進行正確的治理。
  • 類型2:Setter注入
    外部元數據被用來配置組件相互作用的方式。在第一部分中,我們就是使用這種IoC方法利用springconfig.xml文件來配置Spring組件的。
  • 類型3:構造函數注入
    組件(包括構造組件時要用的參數)注冊到框架,而框架提供組件的實例以及所有要應用的指定功能。

  IoC在組件開發和企業開發中越來越受歡迎。IoC的實際例子包括傳統的J2EE解決方案,比如:JBoss、Apache基金會的Avalon項目以及本文的Spring框架。實際上,Spring框架構建于IoC模式的基礎上是為了幫助將它的輕量級功能注入到它的相關應用程序的組件中。

  那么IoC對于Spring AOP有何意義呢?Spring的IoC特性是使用IoC springconfig.xml配置文件對應用程序應用方面的推動因素之一。springconfig.xml配置文件通知Spring框架運行時有關應用程序的組件要被注入的功能類型的信息,所以自然輕量級的AOP功能就以同樣的方式應用了。然后Spring使用代理模式圍繞現有的類和bean實現指定的AOP功能。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 休宁县| 洛扎县| 梓潼县| 盐山县| 高清| 佛山市| 拉萨市| 高阳县| 察哈| 陵水| 宁蒗| 永善县| 大关县| 南澳县| 穆棱市| 道孚县| 广昌县| 滕州市| 乌鲁木齐市| 静宁县| 丹巴县| 保亭| 神农架林区| 定结县| 安图县| 多伦县| 谷城县| 彰化县| 东港市| 莱阳市| 南昌县| 远安县| 陆川县| 河北区| 昌黎县| 洛川县| 海门市| 麟游县| 铜陵市| 察隅县| 莫力|