當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring AOP编程-aspectJ通知类型-6大通知
生活随笔
收集整理的這篇文章主要介紹了
Spring AOP编程-aspectJ通知类型-6大通知
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、創建目標類(target)
public interface IUserService {public void add();public void update();public String del();public void search(); } public class UserServiceImpl implements IUserService {@Overridepublic void add() {System.out.println("userService add...");}@Overridepublic void update() {System.out.println("userService update...");}@Overridepublic String del() {System.out.println(10 / 0); // 一定會拋出異常System.out.println("userService del...");return "hello world";}@Overridepublic void search() {System.out.println("userService search...");}}2、創建通知:在aspectj中它的增強可以不實現任何接口,只需要定義出增強功能(方法)
//advice 通知 public class UserServiceHelper {// 前置通知public void before(JoinPoint jp) {System.out.println("攔截的目標類:" + jp.getSignature().getDeclaringTypeName());System.out.println("攔截的方法名稱:" + jp.getSignature().getName());System.out.println("前置通知");}// 前置通知public void before1() {System.out.println("前置通知");}// 后置通知public void afterReturning(JoinPoint jp, Object val) {System.out.println("目標方法返回值:" + val);System.out.println("后置通知");}// 環繞通知public Object around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("環繞前....");Object value = pjp.proceed(); // 執行目標行為System.out.println("環繞后....");return value;}// 異常拋出通知public void afterThrowing(JoinPoint jp,Throwable ex) {System.out.println("發現了異常。。。。"+ex);}// 最終通知public void after(JoinPoint jp) {System.out.println(jp.getSignature().getName());System.out.println("最終通知");} }3、在spring的配置文件中配置信息
< aop:config>下的< aop:aspect>是aspectJ框架用來聲明切面的。
異常通知:目標行為只有拋出了異常后才會執行這個增強方法
最終通知:無論是否有異常,最終通知都會執行.
aspectJ通知上的參數介紹
在前置通知上可以添加JoinPoint參數,通過它可以獲取目標相關的信息。
使用前置通知可以完成日志記錄,權限控制.
在后置通知上添加的第二個參數val可以獲取目標方法的返回值.同時需要在配置文件中配置。
環繞通知上的參數。環繞通知是我們開發中應用最多的,可以完成日志操作,權限操作,性能監控,事務管理。
拋出異常通知上的第二個參數Throwable它是用于接收拋出的異常
注意:需要在配置文件中聲明。
最終通知上的參數:可以使用最終通知完成資源釋放。
總結
以上是生活随笔為你收集整理的Spring AOP编程-aspectJ通知类型-6大通知的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring AOP编程-传统AOP开发
- 下一篇: Spring AOP编程-aspectJ