java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

概述

Aop(aspect oriented programming面向切面編程),是spring框架的另一個特徵。AOP包括切面、連接點、通知(advice)、切入點(pointCut) 。

1.aop幾個概念:

  • 橫切關注點: 對哪些方面進行攔截,攔截後怎麼處理。

  • 切面(aspect):切面是橫切關注點的抽象。

  • 連接點(joinpoint):被攔截的方法

  • 切入點(pointcut):對連接點進行攔截的定義。

  • 通知(advice):攔截到連接點之後要執行的代碼

  • 目標對象:代理的目標對象

  • 織入

  • 引入

2.主要功能:

  • 日誌記錄

  • 性能統計

  • 安全控制

  • 事物處理

  • 異常處理

3.advice類型:

  • 前置通知(before advice)

  • 返回後通知(after returning advice)

  • 拋出異常後通知(after throwing advice)

  • 後通知(after advice)

  • 環繞通知(around advice)

4.Spring對AOP的支持

Spring中AOP代理由Spring的IOC容器負責生成、管理,其依賴關係也由IOC容器負責管理。因此,AOP代理可以直接使用容器中的其它bean實例作為目標,這種關係可由IOC容器的依賴注入提供。

基於xml配置的aop

舉個例子:

切面:

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

切點:

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

配置文件:

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

單元測試:

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

運行:

MoocAspect before.

AspectBiz biz.

這是 機遇 schemel配置使用aop,其實在spring 1.2版本是有api的,基於api配置aop很麻煩,但是也也應該瞭解下

三、基於spring api方式配置aop

直接上代碼:

接口中有兩個方法,一個基於aop,會被攔截 ,另外一個不會被攔截。

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

實現類:

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

方法前攔截器,實現MethodBeforeAdvice,在制定方法前會被調用。

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

返回後攔截器,執行指定方法後會被調用。

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

異常攔截器,當出現異常時攔截:

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

三個攔截器和Servce實現類需要配置到spring中。實際上,spring無法組裝,需要藉助代理類,把攔截器安裝到NameMatchMethodPointcutAdvisor中,把自定義的bean安裝到ProxyFactoryBean中,然後組裝在一起:

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程

java程序員面試必備知識:Spring詳解篇之 AOP面向切面編程


分享到:


相關文章: