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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Spring Framework中面向方面編程二

2019-11-18 12:58:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

   SPRing Framework中的面向方面編程一 

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

  比起第一部分中介紹的那些通知類(lèi)型,around形式的通知是一種更具侵入性也更強(qiáng)大的面向?qū)ο蟾拍睢1疚膶⒚枋鯽round通知的每個(gè)特性,以便您可以在自己的Spring AOP應(yīng)用程序中正確地使用它。在本文最后,我將向您展示如何使用around通知來(lái)截獲和改變應(yīng)用程序中各個(gè)特性相互作用的方式,以便實(shí)現(xiàn)CUCkoo's Egg(杜鵑的蛋)面向方面設(shè)計(jì)模式。

  概述Spring AOP、IoC和代理

  在第一部分,我們快速瀏覽了Spring的一些AOP特性,而沒(méi)有闡明Spring如何實(shí)現(xiàn)AOP的細(xì)節(jié)。要理解Spring框架如何運(yùn)轉(zhuǎn),尤其是它如何實(shí)現(xiàn)其AOP功能,首先您要明白,Spring是一個(gè)依靠于控制反轉(zhuǎn)(Inversion of Control,IoC)設(shè)計(jì)模式的輕量級(jí)框架。

  注重:本文的目的不是要深入介紹IoC模式,介紹IoC只是為了使您明白該設(shè)計(jì)模式是如何影響Spring AOP實(shí)現(xiàn)的。有關(guān)IoC模式的更具體的介紹請(qǐng)參見(jiàn)本文末尾的參考資料。

  IoC設(shè)計(jì)模式的出現(xiàn)已經(jīng)有一段時(shí)間了。一個(gè)最明顯的例子就是J2EE架構(gòu)本身。隨著企業(yè)開(kāi)發(fā)尤其是J2EE平臺(tái)的出現(xiàn),應(yīng)用程序開(kāi)始依靠于由外部容器所提供的一些特性,比如bean創(chuàng)建、持久性、消息傳遞、會(huì)話(huà)以及事務(wù)治理。

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

  對(duì)組件所依靠特性的控制 被反轉(zhuǎn) 了,這樣外部框架就可以盡可能透明地提供這些特性了。IoC模式真正意識(shí)到了從傳統(tǒng)的由依靠于功能的組件來(lái)負(fù)責(zé)這些功能,到由獨(dú)立的框架來(lái)配置和提供這些功能的方式轉(zhuǎn)變。

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

Spring Framework中面向方面編程二(圖一)
圖1. 沒(méi)有對(duì)BusinessLogic bean應(yīng)用方面時(shí)的順序圖.

  圖字:

  Component:組件

  Provides Facilities:提供功能

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

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

  Service:服務(wù)

  Your Component:您的組件

  IoC Framework:IoC框架

  External services:外部服務(wù)

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

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

  IoC在組件開(kāi)發(fā)和企業(yè)開(kāi)發(fā)中越來(lái)越受歡迎。IoC的實(shí)際例子包括傳統(tǒng)的J2EE解決方案,比如:JBoss、Apache基金會(huì)的Avalon項(xiàng)目以及本文的Spring框架。實(shí)際上,Spring框架構(gòu)建于IoC模式的基礎(chǔ)上是為了幫助將它的輕量級(jí)功能注入到它的相關(guān)應(yīng)用程序的組件中。

  那么IoC對(duì)于Spring AOP有何意義呢?Spring的IoC特性是使用IoC springconfig.xml配置文件對(duì)應(yīng)用程序應(yīng)用方面的推動(dòng)因素之一。springconfig.xml配置文件通知Spring框架運(yùn)行時(shí)有關(guān)應(yīng)用程序的組件要被注入的功能類(lèi)型的信息,所以自然輕量級(jí)的AOP功能就以同樣的方式應(yīng)用了。然后Spring使用代理模式圍繞現(xiàn)有的類(lèi)和bean實(shí)現(xiàn)指定的AOP功能。

  圖2顯示了Spring及其IoC框架如何使用代理對(duì)象提供AOP功能(根據(jù)springconfig.xml文件中的IoC配置。)

Spring Framework中面向方面編程二(圖二)
圖2. springconfig.xml配置文件改變了Spring框架IoC,以便隨后向第一部分中的一個(gè)順序圖提供AOP代理(單擊圖像查看大圖)



發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大方县| 安远县| 马龙县| 静乐县| 林西县| 繁昌县| 民权县| 托里县| 临江市| 郴州市| 沙雅县| 阳城县| 如皋市| 霍林郭勒市| 定陶县| 兴安县| 资溪县| 沈阳市| 承德市| 克拉玛依市| 盐源县| 称多县| 闸北区| 望江县| 砚山县| 西和县| 崇礼县| 仙游县| 荆门市| 定陶县| 于都县| 日照市| 扬中市| 焦作市| 西藏| 天等县| 建平县| 沈阳市| 宁城县| 元朗区| 定边县|