摘要:與的全稱是面向方面編程,這是于年在提出的一個術語。這兒將與面向對象編程相比較。這行代碼的關注點,即方面,就是用戶合法性校驗。橫切性問題的目標是將橫切行的問題以一種更加通用的方式模塊化,從而提升程序的模塊化程度。
AOP
AOP這一術語,近些年越發流行了。在java開發者社區里,學習使用Spring開發框架時,必定會涉及到AOP。不了解AOP不影響學習和使用Spring框架,不過在了解AOP之后,對于開發企業級應用則更加有利。本文視圖以通俗的方式,整理一下AOP知識,以供初次接觸的同行參考。
AOP與OOPAOP的全稱是 面向方面編程 (Aspect-Oriented Programming),這是Gregor Kiczales于1996年在PARC提出的一個術語。AOP是一種與OOP截然不同的看待應用程序結構的方式,按照AOP的觀念,系統被分解為方面(aspect)或者關注點(concern),而不是對象。
這兒將AOP與OOP(面向對象編程 Object-Oriented Programming)相比較。Java開發者一般都比較熟悉OOP,大家都知道,OOP方式帶來的最大好處就是代碼復用,通過三大特性:封裝、繼承、多態,來復用代碼。不過,若與AOP相比較,OOP的代碼復用成程度,還差了那么一點兒。
代碼復用一般情況下,OOP能夠很好地避免代碼重復。具體繼承可以幫助我們在不同類型之間共享相同的行為,多態可以讓我們可以用相同的方式處理不同類型的對象,將注意力集中到它們的共同之處。但是,有些時候,我們無法用OOP避免代碼重復,或者無法用OOP得到一個優雅的解決方案。
舉一個很簡單的栗子,假設我們有一個類,類里有一個公開方法是用來驗證用戶合法性的。那么這個公開方法,必然會其它很多類里被調用,而且調用方式都一樣,偽代碼如下ConcreteClassInstance.auth(userInstance)。雖然重復的地方只是這一行,但這種代碼將毫無規律地散布在整個對象模型中,造成無法避免代碼的重復。
這行代碼的關注點,即方面,就是用戶合法性校驗。采用AOP的話,我們可以達到這樣的效果:僅在一個地方聲明:當某某條件發生時,進行用戶合法性校驗。權威一點的解釋就是:我們可以多帶帶編寫用戶和合法性校驗的代碼,將其包裝成一個方面(aspect),然后我們可以告訴AOP實現產品,如何在將方面織入(weave)到程序流程之中。具體的織入策略也有好幾種,比如:代碼生成和預編譯,動態字節碼生成、JavaEE的動態代理。
橫切性問題AOP的目標是將橫切行(crosscutting)的問題以一種更加通用的方式模塊化,從而提升程序的模塊化程度。什么是橫切性問題?即一個關注點(比如用戶合法性檢查)的實現代碼,散落在很多個類或方法之中。很多企業級問題都具有橫切性,比如事物管理、安全性、資源相關操作。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68039.html
摘要:入門篇學習總結時間年月日星期三說明本文部分內容均來自慕課網。主要的功能是日志記錄,性能統計,安全控制,事務處理,異常處理等等。 《Spring入門篇》學習總結 時間:2017年1月18日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼:https://git...
摘要:官方在文檔沒有提供完整的但我們還是可以在單元測試中找得到的用法。解決的問題是分散在引用各處的橫切關注點。橫切關注點指的是分布于應用中多處的功能,譬如日志,事務和安全。通過將真正執行操作的對象委托給實現了能提供許多功能。源碼剖析系列目錄 作者:bromine鏈接:https://www.jianshu.com/p/e13...來源:簡書著作權歸作者所有,本文已獲得作者授權轉載,并對原文進...
摘要:是一種特殊的增強切面切面由切點和增強通知組成,它既包括了橫切邏輯的定義也包括了連接點的定義。實際上,一個的實現被拆分到多個類中在中聲明切面我們知道注解很方便,但是,要想使用注解的方式使用就必須要有源碼因為我們要 前言 只有光頭才能變強 上一篇已經講解了Spring IOC知識點一網打盡!,這篇主要是講解Spring的AOP模塊~ 之前我已經寫過一篇關于AOP的文章了,那篇把比較重要的知...
摘要:構造函數注入通過調用類的構造函數,將接口實現類通過構造函數變量傳入。而在中,其使用橫切技術,將這類代碼從原屬的封裝對象中提取出來,封裝到一個可重用模塊中,稱為。 最近實習用到Spring的開發框架,但是之前沒有接觸過,因此希望利用網上的資源來學習以下。 Spring官方給出了非常全面的介紹,非常適合我這種完全的小白……在這一系列學習中,我閱讀的主要資源是5.1.2 Reference ...
摘要:入門和學習筆記概述框架的核心有兩個容器作為超級大工廠,負責管理創建所有的對象,這些對象被稱為。中的一些術語切面切面組織多個,放在切面中定義。 Spring入門IOC和AOP學習筆記 概述 Spring框架的核心有兩個: Spring容器作為超級大工廠,負責管理、創建所有的Java對象,這些Java對象被稱為Bean。 Spring容器管理容器中Bean之間的依賴關系,使用一種叫做依賴...
閱讀 3025·2021-11-24 10:21
閱讀 1596·2021-10-11 10:57
閱讀 2811·2021-09-22 15:24
閱讀 2668·2021-09-22 14:58
閱讀 2334·2019-08-30 13:16
閱讀 3483·2019-08-29 13:05
閱讀 3417·2019-08-29 12:14
閱讀 3452·2019-08-27 10:55