1. 程式人生 > >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切面

我們需要代理的類:


(一)經典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.0aop名稱空間裡提供了一些配置元素,簡化了把類轉化為切面的操作。

本質的使用同上,只是簡化配置,隱藏細節



完全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