欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring注解配置AOP導致通知執(zhí)行順序紊亂解決方案

 更新時間:2020年10月23日 10:22:51   作者:dqlai  
這篇文章主要介紹了Spring注解配置AOP導致通知執(zhí)行順序紊亂解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

今天在測試Spring的AOP時,發(fā)現(xiàn)使用注解配置AOP的方式會導致通知的執(zhí)行順序紊亂?!咀罱K通知居然在異常通知之前執(zhí)行了】

測試代碼

(1)定義TargetInterface目標接口

public interface TargetInterface {
public abstract void targetProxy();
}

(2)定義TargetImpl目標類

@Component("target")
public class TargetImpl implements TargetInterface {
public void targetProxy() {
  System.out.println("target proxy ......");
  int i = 1/0;//異常
}
}

(3)定義切面類(內(nèi)含增強方法)

@Component("myAspect")//定義切面類
@Aspect//聲明當前類是切面類
public class TargetAspect {

//定義切點表達式
@Pointcut("execution(* com.ahzyy.target.impl.*.*(..))")
public void pt() {
}

@Before("pt()")
public void before() {

  System.out.println("前置通知......");
}

@After("pt()")
public void after() {

  System.out.println("最終通知......");
}

@AfterReturning("pt()")
public void afterReturning() {

  System.out.println("后置通知......");
}

@AfterThrowing("pt()")
public void afterThrowing() {

  System.out.println("異常通知......");
}
}

(4)配置applicationContextAnno.xml文件

<!--配置組件掃描的包-->
<context:component-scan base-package="com.ahzyy"/>
<!--配置AOP自動代理-->
<aop:aspectj-autoproxy/>

(5)定義測試類

@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration("classpath:applicationContextAnno.xml")
public class AopTest {

@Autowired
private TargetInterface target;

@Test
public void test01() {

  target.targetProxy();
}
}

(6)運行結果:


【最終通知在異常通知之前執(zhí)行了!!!】

(7)解決方法:

(7.1)使用xml配置方式配置AOP;

(7.2)注解使用@Around(環(huán)繞通知)方式配置AOP(修改TargetAspect類使用環(huán)繞通知);

@Component("myAspect")//定義切面類
@Aspect//聲明當前類是切面類
public class TargetAspect {

//定義切點表達式
@Pointcut("execution(* com.ahzyy.target.impl.*.*(..))")
public void pt() {
}

@Around("pt()")
public Object aroundNotice(ProceedingJoinPoint pjp) {

  System.out.println("環(huán)繞通知");
  Object result = null;

  before();//前置通知
  try {
    result = pjp.proceed();

    afterReturning();//后置通知
  } catch (Throwable throwable) {
    
    afterThrowing();//異常通知
    throwable.printStackTrace();
  }
  after();//最終通知

  return result;
}

public void before() {

  System.out.println("前置通知......");
}

public void afterReturning() {

  System.out.println("后置通知......");
}

public void afterThrowing() {

  System.out.println("異常通知......");
}

public void after() {

  System.out.println("最終通知......");
}
}

(7.3)運行結果

[運行順序正確]

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 關于JVM默認堆內(nèi)存大小問題

    關于JVM默認堆內(nèi)存大小問題

    這篇文章主要介紹了關于JVM默認堆內(nèi)存大小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java高并發(fā)BlockingQueue重要的實現(xiàn)類詳解

    Java高并發(fā)BlockingQueue重要的實現(xiàn)類詳解

    這篇文章主要給大家介紹了關于Java高并發(fā)BlockingQueue重要的實現(xiàn)類的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java設計模式筆記之Builder模式

    Java設計模式筆記之Builder模式

    建造者模式是日常開發(fā)中比較常見的設計模式,它的主要作用就是將復雜事物創(chuàng)建的過程抽象出來,該抽象的不同實現(xiàn)方式不同,創(chuàng)建出的對象也不同,這篇文章主要給大家介紹了關于Java設計模式筆記之Builder模式的相關資料,需要的朋友可以參考下
    2022-03-03
  • Java虛擬機JVM性能優(yōu)化(二):編譯器

    Java虛擬機JVM性能優(yōu)化(二):編譯器

    這篇文章主要介紹了Java虛擬機JVM性能優(yōu)化(二):編譯器,本文先是講解了不同種類的編譯器,并對客戶端編譯,服務器端編譯器和多層編譯的運行性能進行了對比,然后給出了幾種常見的JVM優(yōu)化方法,需要的朋友可以參考下
    2014-09-09
  • java實現(xiàn)文件上傳下載至ftp服務器

    java實現(xiàn)文件上傳下載至ftp服務器

    這篇文章主要為大家詳細介紹了java實現(xiàn)文件上傳下載至ftp服務器的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 修改idea的這些啟動參數(shù),令你的idea健步如飛

    修改idea的這些啟動參數(shù),令你的idea健步如飛

    這篇文章主要介紹了修改idea的這些啟動參數(shù),令你的idea健步如飛~具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • java Date類詳解及使用總結

    java Date類詳解及使用總結

    這篇文章主要介紹了java Date類詳解及使用總結的相關資料,需要的朋友可以參考下
    2017-02-02
  • java編程實現(xiàn)郵件定時發(fā)送的方法

    java編程實現(xiàn)郵件定時發(fā)送的方法

    這篇文章主要介紹了java編程實現(xiàn)郵件定時發(fā)送的方法,涉及Java基于定時器實現(xiàn)計劃任務的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié)

    詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié)

    本篇文章主要介紹了詳解SpringMVC實現(xiàn)圖片上傳以及該注意的小細節(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • java算法之余弦相似度計算字符串相似率

    java算法之余弦相似度計算字符串相似率

    這篇文章主要介紹了java算法之余弦相似度計算字符串相似率,對算法感興趣的同學,可以參考下
    2021-05-05

最新評論