Spring AOP三種配置詳細介紹
AOP框架三足鼎立:
1. AspectJ
2.Jboss AOP
3.Spring AOP
Spring提供4中AOP支援
1.基於代理的經典AOP
2.純POJO切面(使用XML)
[email protected]註解驅動的切面
4.注入式AspcetJ切面
我們需要代理的類:
(一)經典aop
通知:advice
日誌、資料庫連線等這些公共功能的程式碼 (切面---à多個類的交叉的功能)
Spring中提供:前置通知 環繞通知 後置通知 異常通知 引入通知
(介面)
MethodBeforeAdvice MethodInteceptor AfterReturningAdvice ThrowsAdvice
其中引入通知是通過配置的,實現自定義切入點,和上述四個通知配合使用
以MethodBeforeAdvice為例
通知可以獲得代理的方法和物件和引數,可以對它進行相關處理或過濾
代理物件:ProxyFactoryBean 這是Spring框架提供出來的,我們直接使用,並配置相關屬性
通過配置 這個代理物件代理一個或多個介面 還有實際代理的目標物件 然後把通知織入代理物件 ,通過配置 將他們關聯起來。
使用:取得代理物件,轉為被代理類的介面(IApp)即可。所以方法都會被代理
ProxyFactoryBean原始碼中:
我們剛剛配置的
儘管ProxyFactoryBean中並沒有proxyInterfaces這個屬性, 但它有setProxyInterfaces()方法,還是會呼叫這個方法
上述是經典AOP
spring有一套經典AOPProxyFactoryBean笨重複雜
spring3.0新的AOP框架模型 精簡易用
(二)XML宣告切面
極大簡化了spring切面的配置工作,同時也讓程式透明化,隱藏了切面的很多細節。
至此上面所有內容都可以作為理解spring配置AOP的基礎,是最原始的配置方式,也體現了spring處理的過程。
使用ProxyFactoryBean配置有些欠優雅,在spring2.0裡新的xml配置元素體現了改進。Spring2.0在aop名稱空間裡提供了一些配置元素,簡化了把類轉化為切面的操作。
(本質的使用同上,只是簡化配置,隱藏細節
完全pojo--->切面
在XML中配置切面aspect為audience(使得audience成為切面)
切點
前置通知 後置通知 after-returning通知 環繞通知 異常通知
不用再配置ProxyFactoryBean
測試成功:
注意:
環繞通知需要使用ProceedingJoinPoint作為入參
通知可以傳遞引數 可以校驗方法的引數值
(三)註解切面
Aspect5引入的關鍵特性--à@AspcetJ,AspectJ切點表示式
通過註解使Audience類轉換為切面
這樣就不需要在xml中進行轉換了,不過要在spring的上下文中宣告一個自動代理Bean
該bean知道如何把@AspcetJ註解的Bean轉變成代理通知。
Annotation都需要解析程式才有意義
一般框架裡面提供給我們的註解 框架本身會提供解析的程式
配置檔案中<aop:aspectj-autoproxy/>是由AspectJAutoProxyBeanDefinitionParser解析
AspectJAutoProxyBeanDefinitionParser不是一個public類 它的介面如下:
檢視其繼承體系:
AspectJAutoProxyBeanDefinitionParser原始碼:
可以看出它是屬於spring框架裡面的。也就是說我們只是用了aspect的表示式而已,底層並沒有使用aspect的技術
只用了aspcet的註解本身,註解本身是aspectj專案的
(四)注入AspcetJ切面
略
Spring AOP原理
動態代理 見動態代理文章
相關推薦
Spring AOP三種配置詳細介紹
AOP框架三足鼎立: 1. AspectJ 2.Jboss AOP 3.Spring AOP Spring提供4中AOP支援 1.基於代理的經典AOP 2.純POJO切面(使用XML) [email protected]註解驅動的切面 4.注入式AspcetJ
java框架篇---spring aop兩種配置方式
system 操作類 asp xml文件 ack ica one pack exc 第一種:註解配置AOP 註解配置AOP(使用 AspectJ 類庫實現的),大致分為三步: 1. 使用註解@Aspect來定義一個切面,在切面中定義切入點(@Pointcut),通知類型(@
ES倒排索引與三種Cache詳細介紹
網上看到的一篇文章,對Lucene的倒排索引是如何執行的,說的比較易懂,就轉過來分享下。 Elasticsearch是通過Lucene的倒排索引技術實現比關係型資料庫更快的過濾。特別是它對多條件的過濾支援非常好,比如年齡在18和30之間,性別為女性這樣的組合查詢。倒排索引很多地方都有介紹,但
java向多執行緒中傳遞引數的三種方法詳細介紹
在傳統的同步開發模式下,當我們呼叫一個函式時,通過這個函式的引數將資料傳入,並通過這個函式的返回值來返回最終的計算結果。但在多執行緒的非同步開發模式下,資料的傳遞和返回和同步開發模式有很大的區別。由於執行緒的執行和結束是不可預料的,因此,在傳遞和返回資料時就無法象函式一樣通過
Spring的三種配置資料來源的方式
1、使用org.springframework.jdbc.datasource.DriverManagerDataSource 說明:DriverManagerDataSource建立連線是隻要有連線就新建一個connection,根本沒有連線池的作用。 <bean
Java後臺框架篇--Spring的三種配置方式
1、Explicit configuration in XML:顯示的XML配置。 優點: 1)XML配置方式進一步降低了耦合,使得應用更加容易擴充套件,即使對配置檔案進一步修改也不需要工程進行修改和重新編譯。 2)在處理大的業務量的時候,用X
Spring AOP三種方式定義增強
一、通過實現(implements)的方式增強 BeforeLog: package cn.log; import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice;
Apache三種工作模式介紹與配置
Apache工作模式查看方法 查看Apache編譯安裝的參數 worker模式原理及配置方法 prefork模式原理及配置方法 event模式原理及配置方法 Apache三種工作模式介紹與配置一、Apache的三種工作模式介紹及相關查看方法1、Apache三種工作模式簡介Apache目前一
spring 整合hibernate事物的三種配置
spring整合事物的三種配置 在配置宣告事事物前,首先建立一個maven jar專案,一下是目錄結構(1-0): pom.xml 如下(1-1): <dependencies> <dependency> <groupId>junit
詳解Spring面向切面程式設計(AOP)三種實現
一、什麼是AOP AOP(Aspect Oriented Programming),即面向切面程式設計,可以說是OOP(Object Oriented Programming,面向物件程式設計)的補充和完善。OOP引入封裝、繼承、多型等概念來建立一種物件層次結構,用於模擬公共行為的一個集合。不過OOP允許開
詳解Spring面向切面編程(AOP)三種實現
安全 認證 基本 -s oop 掃描 編程 data 異常 一、什麽是AOP AOP(Aspect Oriented Programming),即面向切面編程,可以說是OOP(Object Oriented Programming,面向對象編程)的補充和完善。OOP引入封裝
spring學習(五)詳細介紹AOP
AOP稱為面向切面程式設計,在程式開發中主要用來解決一些系統層面上的問題,比如日誌,事務,許可權等待 它利用一種稱為"橫切"的技術,剖解開封裝的物件內部,並將那些影響了多個類的公共行為封裝到一個可重用模組,並將其命名為"Aspect",即切面。所謂"切面",簡單說就是那些與業務無關,卻為業務模組所共同呼
Spring -- 三種配置方式
1、Explicit configuration in XML:顯示的XML配置。 優點: 1)XML配置方式進一步降低了耦合,使得應用更加容易擴充套件,即使對配置檔案進一步修改也不需要工程進行修改和重新編譯。 2)在處理大的業務量的時候,用X
菜鳥學習Spring——SpringIoC容器基於三種配置的對比
一、概述 對於實現Bean資訊定義的目標,它提供了基於XML、基於註解及基於java類這三種選項。下面總結一下三種配置方式的差異。 二、Bean不同配置方式比較。 三、Bea
關於spring中bean的三種配置方式的比較
在學習spring時,看到有關spring中bean的三種配置方式:基於xml配置,基於註解配置和基於類配置。書中總結的很不錯,就記錄下來,方便學習和檢視。(三種配置方式的介紹可以參考:三種方式配Bea
Spring的三種自身配置資料來源及依賴第三方包方式
一、Spring的三種配置資料來源的方式 1、使用org.springframework.jdbc.datasource.DriverManagerDataSource 說明:DriverManagerDataSource建立連線是隻要有連線就新建一個connection
VMware三種網絡介紹
子網 顯示 大學 用戶 box dhcp服務器 虛擬交換 比較 每次 前言 很多人安裝虛擬機的時候,經常遇到不能上網的問題,而vmware有三種網絡模式,對初學者來說也比較眼花聊亂,今天我就來基於虛擬機3種網絡模式,幫大家普及下虛擬機上網的背景知識。(博文原創自http:/
Hive metastore三種配置方式
org erro connect 其中 art ont failed log hive Hive的meta數據支持以下三種存儲方式,其中兩種屬於本地存儲,一種為遠端存儲。遠端存儲比較適合生產環境。Hive官方wiki詳細介紹了這三種方式,鏈接為:Hive Metastore
spring AOP使用 xml配置
有一個 自定義 參數 應該 res null 目前 .org 方法調用 目前有一個業務層的類,我想要監控業務層這個類裏面的某些方法。把其中的一些操作記錄到一個log表中,但是又不想侵入代碼,所以采用切面來完成 一、首先記錄log的類: package com.aoptes
springboot三種配置檔案上傳下載大小的配置
配置檔案為application.yml格式: spring: http: multipart: enabled: true max-file-size: 30MB max-request-size: 30MB第二種: package com.haiyiso