最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringAop如何通過某個子類切父類

 更新時間:2021年11月24日 14:40:02   作者:zxx3536  
這篇文章主要介紹了SpringAop如何通過某個子類切父類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringAop通過某個子類切父類

偽代碼如下

package com.zjy;
public abstract class A{
 public void a(){
  system.out.printlin("【a】方法被調用");
 }
}
package com.zjy;
public class B extends A{
 public void b(){
  system.out.printlin("【b】方法被調用");
 }
}
package com.zjy;
public class C extends A{
 public void c(){
  system.out.printlin("【c】方法被調用");
 }
}
package com.zjy;
public class D extends A{
 public void d(){d
  system.out.printlin("【d】方法被調用");
 }
}

要求如下,我們想要在代碼通過B類使用a方法時候進行切面增強,通過其他類進行使用時,都不進行增強

within 和 execution的精確到類均不能對父類方法進行增強

正確方法1

 @Before("execution(* com.zjy.*.*(..))")
    public void dealOtherServicePointcut(JoinPoint joinPoint) {
        Object aThis = joinPoint.getThis();
        if((aThis instanceof B )){
            String name = joinPoint.getSignature().getName();
            log.info("進入前置方法****************************************************["+name+"]");
        }
    }

方法1是使用com.zjy包下的所有子類進行篩選,將類進行模糊匹配

正確方法2

 @Before("execution(* com.zjy..*.*(..))")
    public void dealOtherServicePointcut(JoinPoint joinPoint) {
        Object aThis = joinPoint.getThis();
        if((aThis instanceof B )){
            String name = joinPoint.getSignature().getName();
            log.info("進入前置方法****************************************************["+name+"]");
        }
    }

方法2是使用com.zjy包下的所有類以及下級包下的類,進行篩選,將類進行模糊匹配。

注意:

1.要使用instanceof關鍵字進行類的過濾,否則其他類也會進行增強。

2.無需考慮在增強時類需要多次代理,因為在AOP增強時只會生成一個代理類,并且大多數(shù)的類都會有代理類的生成,所以無需考慮(將沒必要的類也進行了代理,后續(xù)需要使用instanceof進行判斷對性能的降低)。

3.within 和 execution的精確到類均不能對父類方法進行增強

SpringAOP會忽略從父類繼承的方法

在項目中,我想攔截所有的dao類,結構如下:

dao
?? ---| generic
??????????? ---| GenericDao
?? ---| GoodsDao
?? ---| SupermarketDao
?? ---| UserDao

下面的三個dao 繼承自 統(tǒng)一的父類(GenericDao),在beans.xml中,我只攔截了下面的三個子類,beans.xml中的部分代碼如下:

<aop:aspect id="myAspect" ref="loggerAop">
   <aop:pointcut id="daoPointcut" expression="execution(* com.shop.jn.dao.*.*(..))" />
   <aop:around pointcut-ref="daoPointcut" method="around" />
  </aop:aspect>

結果從GenericDao 中繼承下來的方法都沒有被aop 攔截到。

如何解決這個問題呢?

讓切面也匹配父類(同時匹配父類和子類),修改如下:

<aop:aspect id="myAspect" ref="loggerAop">
           <aop:pointcut id="daoPointcut" expression="execution(* com.shop.jn.dao..*.*(..))" />
           <aop:around pointcut-ref="daoPointcut" method="around" />
       </aop:aspect>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 一次線上websocket返回400問題排查的實戰(zhàn)記錄

    一次線上websocket返回400問題排查的實戰(zhàn)記錄

    最近項目中有端對端通信場景,實時性要求較高,考慮后選用了websocket 這一通信協(xié)議,下面這篇文章主要給大家介紹了一次線上websocket返回400問題排查的實戰(zhàn)記錄,需要的朋友可以參考下
    2022-04-04
  • Spring Cloud Stream整合RocketMQ的搭建方法

    Spring Cloud Stream整合RocketMQ的搭建方法

    本文介紹了如何使用SpringCloudStream整合RocketMQ進行消息傳遞,SpringCloudStream是一個用于構建與共享消息系統(tǒng)連接的框架,支持持久pub/sub語義和消費者組,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Spring Security實現(xiàn)基于角色的訪問控制框架

    Spring Security實現(xiàn)基于角色的訪問控制框架

    Spring Security是一個功能強大的安全框架,提供了基于角色的訪問控制、身份驗證、授權等安全功能,可輕松保護Web應用程序的安全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-04-04
  • elasticsearch的靈魂唯一master選舉機制原理分析

    elasticsearch的靈魂唯一master選舉機制原理分析

    這篇文章主要為大家介紹了elasticsearch的靈魂唯一master選舉機制原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • IDEA版最新MyBatis程序配置教程詳解

    IDEA版最新MyBatis程序配置教程詳解

    這篇文章主要介紹了IDEA版最新MyBatis程序配置教程詳解,需要的朋友可以參考下
    2020-07-07
  • swagger中如何給請求添加header

    swagger中如何給請求添加header

    這篇文章主要介紹了swagger中如何給請求添加header,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解SpringBoot簡化配置分析總結

    詳解SpringBoot簡化配置分析總結

    這篇文章主要介紹了詳解SpringBoot簡化配置分析總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Java如何在Map中存放重復key

    Java如何在Map中存放重復key

    這篇文章主要介紹了Java如何在Map中存放重復key,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • java線程本地變量ThreadLocal詳解

    java線程本地變量ThreadLocal詳解

    ThreadLocal則為每一個線程提供了一個變量副本,從而隔離了多個線程訪問數(shù)據(jù)的沖突,ThreadLocal提供了線程安全的對象封裝,下面我們就來詳細了解一下吧
    2019-06-06
  • Java中Collections.sort的使用

    Java中Collections.sort的使用

    本文主要介紹了Java中Collections.sort的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05

最新評論

扎赉特旗| 兰坪| 丰台区| 海南省| 安国市| 浦北县| 伊春市| 莱西市| 轮台县| 饶河县| 彭州市| 巩义市| 绥德县| 吉隆县| 绿春县| 从江县| 蒙自县| 呼玛县| 攀枝花市| 红原县| 新建县| 晋中市| 桂林市| 那坡县| 长海县| 英吉沙县| 厦门市| 扶余县| 辽中县| 固始县| 金沙县| 密山市| 高陵县| 吴旗县| 固安县| 抚宁县| 黄大仙区| 汉沽区| 瓮安县| 邵阳市| 来宾市|