spring AOP 多個切面

2021-07-09 21:57:25 字數 2454 閱讀 5131

/**

* 切面:日誌

*@author w7

* */

public

class

logger

}

/**

* 切面:安全框架

*@author w7

* */

public

class

security

}

/**

* 切面:許可權

*@author w7

* */

public

class

privilege

public

void

setaccess(string access)

/*** 環繞通知方法

* *@param joinpoint 目標方法,有返回值

*@return

*@throws throwable

*/public object controltarget(proceedingjoinpoint joinpoint) throws throwableelse

return obj;

}}

/**

* 業務介面

*@author w7

* */

public

inte***ce

salarymanager

/**

* 目標類:業務實現

*@author w7

* */

public

class

salarymanagerimpl

implements

salarymanager

}

/**

* 第二個 環繞通知測試

* * 如果有多個環繞通知時,則所有環繞通知 執行完畢後,才執行目標方法

*@author w7

* */

public

class

aroundclass

}

//xml配置

id="salarymanager"

class="com.itheima09.springaop.xml.salary.salarymanagerimpl">

bean>

id="logger"

class="com.itheima09.springaop.xml.salary.logger">

bean>

id="security"

class="com.itheima09.springaop.xml.salary.security">

bean>

id="privilege"

class="com.itheima09.springaop.xml.salary.privilege">

name="access"

value="admin">

property>

bean>

id="aroundclass"

class="com.itheima09.springaop.xml.salary.aroundclass">

bean>

expression="execution(* com.itheima09.springaop.xml.salary.salarymanagerimpl.*(..))"

id="perform"/>

ref="logger">

method="logging"

pointcut-ref="perform"/>

aop:aspect>

ref="security">

method="security"

pointcut-ref="perform"/>

aop:aspect>

ref="privilege">

method="controltarget"

pointcut-ref="perform"/>

aop:aspect>

ref="aroundclass">

method="aroundmethod"

pointcut-ref="perform"/>

aop:aspect>

aop:config>

@test

public

void

test()

結果:logging

security

---------------- // 第二個環繞通知執行的輸出

正在檢視工資 //目標方法執行結果

null

//目標方法返回值

約定程式設計Spring AOP 多個切面

上面我們討論了乙個切面的執行,而事實上spring還可以支援多個切面的執行。在組織多個切面的時候,我們需要知道其執行的順序,首先我們建立 個切面類,如下 所示 package cn.hctech2006.boot.bootaop.aspect import org.aspectj.lang.anno...

spring aop 切面測試

spring 配置 aop 切面類 package com.changhang.urgoo.impl.utils import com.changhang.urgoo.impl.entity.result.mesresult import com.changhang.urgoo.impl.entit...

Spring aop 切面程式設計

package cn.annals.demo.proc.aop import org.aspectj.lang.joinpoint import org.aspectj.lang.proceedingjoinpoint import org.aspectj.lang.annotation.after...