亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

用AspectJ和Spring進行依賴項插入

2019-11-18 11:02:45
字體:
來源:轉載
供稿:網友

  依靠項插入和面向方面編程是互補的技術,所以想把它們結合在一起使用是很自然的。請跟隨 Adrian Colyer 一起探索兩者之間的關系,并了解怎樣才能把它們組合在一起,來促進高級的依靠項插入場景。

  依靠項插入和面向方面編程(AOP)是兩個要害的技術,有助于在企業應用程序中簡化和純化域模型和應用程序分層。依靠項插入封裝了資源和協調器發現的細節,而方面可以(在其他事情中)封裝中間件服務調用的細節 —— 例如,提供事務和安全性治理。因為依靠項插入和 AOP 都會形成更簡單、更輕易測試的基于對象的應用程序,所以想把它們結合在一起使用是很自然的。方面可以幫助把依靠項插入的能力帶到更廣的對象和服務中,而依靠項插入可以用來對方面本身進行配置。

  在這篇文章中,我將介紹如何把 SPRing 框架的依靠項插入與用 aspectJ 5 編寫的方面有效地結合在一起。我假設您擁有基本的 AOP 知識(假如沒有這方面知識 ,可以在 參考資料 中找到一些良好的起點),所以我的討論將從對基于依靠項插入的解決方案中包含的要害角色和職責的分析開始。從這里,我將介紹如何通過依靠項插入配置單體(singleton)方面。因為配置非單體方面與配置域對象共享許多公共內容,所以后面我會研究一個應用于這兩者的簡單解決方案??偨Y這篇文章時,我會介紹如何為多個高級依靠項插入場景使用方面,其中包括基于接口的插入和重復插入。

  什么是依靠項插入?

  在 Domain-Driven Design 一書中,Eric Evans 討論了如何把對象與建立對象的配置和關聯的細節隱藏起來:

  對象的大部分威力在于對象內部復雜的配置和關聯。應當對對象進行提煉,直到與對象的意義或者在交互中支持對象的作用無關的東西都不存在為止。這個中間循環的責任很多。假如讓復雜對象負責自己的創建,就會出現問題。

  Evans 接著提供了一個汽車引擎的示例:它的眾多部件一起協作,執行引擎的職責。雖然可以把引擎塊想像成把一組活塞插入氣缸,但是這樣的設計會把引擎明顯地弄復雜。相反,技工或機器人裝配引擎,引擎本身只考慮自己的操作。

  雖然這個示例是我從書中介紹用于復雜對象創建的工廠 概念一節中取出的,但是我們也可以用這個概念解釋依靠項插入技術的動機。

  從協作到合約
用AspectJ和Spring進行依靠項插入(圖一)參考讀物
關于依靠項插入的經典介紹,請參閱 Martin Fowler 的 “Inversion of Control Containers and the Dependency Injection Pattern”。關于使用 Spring 的依靠項插入的更多內容,請參閱 Professional java Development with the Spring Framework。這兩者的鏈接都在 參考資料 中。
  針對這篇文章的目的,可以把依靠項插入想像成對象和對象的執行環境之間的合約。對象(執行 ResourceConsumer、 Collaborator 和 ServiceClient 的其中一個角色或全部角色)同意不出去搜索自己需要的資源、它與之協作的合作伙伴或它使用的服務。相反,對象提供一種機制,讓這些依靠項可以提供給它。接下來,執行環境同意在對象需要它的依靠項之前,向對象提供所有的依靠項。

  解析依靠項的方法在不同的場景中各有不同。例如,在單元測試用例中,對象的執行環境是測試用例本身,所以測試設置代碼有責任直接滿足依靠項。在集成測試或應用程序在生產環境時,代理 負責尋找滿足對象依靠項的資源,并把它們傳遞給對象。代理的角色通常是由輕量級容器扮演的,例如 Spring 框架。不管依靠項是如何解析的,被配置的對象通常不知道這類細節。在第二個示例中,它可能還不知道代理的存在。

  代理(例如 Spring 框架)有四個要害職責,在整篇文章中我將不斷提到這些職責,它們是:
  • 確定對象需要配置(通常因為對象剛剛創建)
  • 確定對象的依靠項
  • 發現滿足這些依靠項的對象
  • 用對象的依靠項對它進行配置
  從下面的各種依靠項插入解決方案可以看出,解決這些職責有多種策略。
  使用 Spring 進行依靠項插入

  在標準的 Spring 部署中,Spring 容器同時負責創建和配置核心應用程序對象(稱為 bean)。因為容器既創建對象,又扮演代理的角色,所以對 Spring 容器來說,確定 bean 已經創建而且需要配置是件輕而易舉的小事。通過查詢應用程序的元模型,可以確定 bean 的依靠項,元模型通常是在 Spring 的配置文件中用 xml 表示的。

  滿足 bean 的依靠項的對象是容器治理的其他 bean。容器充當這些 bean 的倉庫,所以可以用名稱查詢它們(或者在需要的時候創建)。最后,容器用新 bean 的依靠項對其進行配置。這通常是通過 setter 插入完成的(調用新 bean 的 setter 方法,把依靠項作為參數傳遞進去),雖然 Spring 支持其他形式的插入,例如構造函數插入和查詢方法插入(請參閱 參考資料 學習關于使用 Spring 進行依靠項插入的更多內容。)

  方面的依靠項插入

  像其他對象一樣,方面可以從通過依靠項插入進行的配置中受益。在許多情況下,把方面實現為輕量級控制器 是良好的實踐。在這種情況下,方面確定什么時候應當執行某些行為,但是會委托給協作器去執行實際的工作。例如,可以用異常處理策略對象配置異常處理方面。方面會探測出什么時候拋出了異常,并委托處理器對異常進行處理。清單 1 顯示了基本的 RemoteException 處理方面:

清單 1. RemoteException 處理方面


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美乱人伦中文字幕在线| 一区二区在线视频播放| 欧美性xxxx极品hd满灌| 亚洲香蕉成人av网站在线观看| 日韩黄色av网站| 欧美日韩中文字幕在线视频| 亚洲色图偷窥自拍| 欧美成人黄色小视频| 亚洲一区二区三区四区视频| 欧美孕妇孕交黑巨大网站| 日韩视频中文字幕| 亚洲福利影片在线| 国产成人精品视频在线| 国内精品久久久久| 国产福利精品视频| 久久久久久久久久久人体| 欧美激情第1页| 亚洲精品国产精品久久清纯直播| 91精品国产亚洲| 欧美激情亚洲精品| 91精品在线一区| 亚洲精品视频中文字幕| 国产精品999| 久久国产精品电影| 久久久精品免费视频| 亚洲国产精久久久久久| 久久久精品影院| 欧美成人在线影院| 欧美猛交ⅹxxx乱大交视频| 亚洲国内精品在线| 夜夜嗨av色一区二区不卡| 久久精品最新地址| 欧美精品国产精品日韩精品| 色偷偷av一区二区三区乱| 欧美一级黑人aaaaaaa做受| 欧美精品免费在线| 欧美性jizz18性欧美| 国产视频久久久久| 亚洲男人的天堂在线播放| 精品久久久久久亚洲精品| 亚洲免费福利视频| 国产精品成人v| 91色在线观看| 色综合伊人色综合网| 91久久综合亚洲鲁鲁五月天| 久久亚洲综合国产精品99麻豆精品福利| 精品偷拍各种wc美女嘘嘘| 国产在线视频2019最新视频| 亚洲天堂精品在线| 久久精品中文字幕免费mv| 欧美激情精品久久久久久蜜臀| 久久国产一区二区三区| 国产中文欧美精品| 精品国产一区二区三区久久| 欧美精品videofree1080p| 97久久精品人搡人人玩| 国产小视频91| 午夜精品一区二区三区av| 久久久精品久久久久| 亚洲精品影视在线观看| 久久久91精品国产一区不卡| 日本精品免费一区二区三区| 欧美日韩在线观看视频| 日韩免费观看av| 久久人人97超碰精品888| 美女av一区二区| 亚洲精品免费在线视频| 成人国产精品久久久久久亚洲| 国产偷国产偷亚洲清高网站| 欧美在线一区二区三区四| 久久精品国产96久久久香蕉| 欧美一级bbbbb性bbbb喷潮片| 欧美激情一级精品国产| 日韩av电影手机在线| 久久久精品网站| 久久国内精品一国内精品| 日韩高清免费观看| 久久亚洲精品毛片| 国产精品夜色7777狼人| 欧美日韩国产一区中文午夜| 亚洲电影av在线| 中文字幕精品一区二区精品| 55夜色66夜色国产精品视频| 久久久999国产| 亚洲成人aaa| 国产精品一二三在线| 亚洲欧美国产一本综合首页| 欧美日本高清视频| 综合136福利视频在线| 欧美极品xxxx| 欧美成人高清视频| 久久久中文字幕| 欧美激情手机在线视频| 日韩视频免费观看| 久久久999成人| 国产99久久精品一区二区永久免费| 国产精品一区专区欧美日韩| 精品国产老师黑色丝袜高跟鞋| 亚洲欧美日韩视频一区| 91av在线视频观看| 欧美成人精品在线| 亚洲成人激情在线| xx视频.9999.com| 国产精品夜色7777狼人| 欧美激情一区二区三区高清视频| 国产九九精品视频| 91国偷自产一区二区三区的观看方式| 精品视频在线播放免| 91免费国产网站| 亚洲 日韩 国产第一| 日韩精品欧美激情| 久久久久久久久电影| 亚洲电影免费观看高清| 91精品综合久久久久久五月天| 久久精品免费电影| 这里只有精品久久| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品免费视频久久久| 热久久免费视频精品| 亚洲日本aⅴ片在线观看香蕉| 久久亚洲精品一区二区| 亚洲精品国产免费| 日本一本a高清免费不卡| 久久中文字幕在线| 久久精品国产免费观看| 久久久在线免费观看| 亚洲mm色国产网站| 欧美巨猛xxxx猛交黑人97人| 97香蕉久久超级碰碰高清版| 国产成人免费av| 在线电影中文日韩| 亚洲综合最新在线| 91av福利视频| 国产精品高潮呻吟久久av黑人| 日韩在线视频网| 中文字幕亚洲字幕| 久久亚洲精品视频| 国产精品三级久久久久久电影| 亚洲成人三级在线| 国产精品户外野外| 欧美成人精品激情在线观看| 日韩av在线不卡| 欧美亚洲成人免费| 亚洲精品国产精品久久清纯直播| 九九热视频这里只有精品| 92看片淫黄大片看国产片| 韩剧1988免费观看全集| 一本色道久久88综合日韩精品| 久久免费视频在线观看| 国产精品1234| 国产精品91一区| 国产精品极品美女在线观看免费| 中文字幕亚洲欧美日韩2019| 色综合久久88| 欧美国产极速在线| 亚洲欧美一区二区三区在线| 日韩av黄色在线观看| 亚洲视频欧洲视频| 日韩av在线免费看| 亚洲一区二区三区在线免费观看| 亚洲视频在线观看网站| 国产精品成人观看视频国产奇米| 在线视频中文亚洲| 亚洲精品一区av在线播放|