日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring AOP编程-aspectJ通知类型-6大通知

發布時間:2025/1/21 javascript 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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框架用來聲明切面的。
異常通知:目標行為只有拋出了異常后才會執行這個增強方法
最終通知:無論是否有異常,最終通知都會執行.

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!-- target --><bean id="userService" class="cn.nwtxxb.aspectj.UserServiceImpl"/><!-- advice--><bean id="userServiceAdvice" class="cn.nwtxxb.aspectj.UserServiceHelper"/><!-- 使用aop:config來聲明 使用aop:aspect來配置切面 --><aop:config proxy-target-class="true"><aop:aspect ref="userServiceAdvice"><aop:pointcut expression="execution(* *.del(..))" id="delPointCut"/><aop:before method="before" pointcut-ref="delPointCut"/><aop:before method="before1" pointcut-ref="delPointCut"/><aop:after-returning method="afterReturning" pointcut-ref="delPointCut" returning="val"/><aop:around method="around" pointcut-ref="delPointCut"/><aop:after-throwing method="afterThrowing" pointcut-ref="delPointCut" throwing="ex"/><aop:after method="after" pointcut-ref="delPointCut"/></aop:aspect></aop:config> </beans>

aspectJ通知上的參數介紹

在前置通知上可以添加JoinPoint參數,通過它可以獲取目標相關的信息。
使用前置通知可以完成日志記錄,權限控制.
在后置通知上添加的第二個參數val可以獲取目標方法的返回值.同時需要在配置文件中配置。
環繞通知上的參數。環繞通知是我們開發中應用最多的,可以完成日志操作,權限操作,性能監控,事務管理。
拋出異常通知上的第二個參數Throwable它是用于接收拋出的異常
注意:需要在配置文件中聲明。
最終通知上的參數:可以使用最終通知完成資源釋放。

總結

以上是生活随笔為你收集整理的Spring AOP编程-aspectJ通知类型-6大通知的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。