/**
* 切面:日誌
*@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...