spring aop獲取代理目標(biāo)對(duì)象

spring aop獲取代理目標(biāo)對(duì)象

轉(zhuǎn)載: https://coget.cn/archives/spring%20aop%E8%8E%B7%E5%8F%96%E4%BB%A3%E7%90%86%E7%9B%AE%E6%A0%87%E5%AF%B9%E8%B1%A1

大家一定在開發(fā)中遇見了這個(gè)問(wèn)題,getClass() 后獲取不到目標(biāo)對(duì)象,或者說(shuō),拿到 class 后 getAnnotation() 獲取不到,這些是 spring aop 將對(duì)象,改裝成了代理對(duì)象。

上代碼,如:掃描MQ注解

正常:

xxx.getClass().getAnnotation(MQConsumer.class);

增加 @Transactional,后 spring 事務(wù)管理器,將 Method 增改,包裝了一個(gè)代理對(duì)象。

 consumers.entrySet().forEach(entry -> {
    MQConsumer consumer;
    if (AopUtils.isAopProxy(entry.getValue())) {
        consumer = AopProxyUtils.getSingletonTarget(entry.getValue()).getClass().getAnnotation(MQConsumer.class);
    } else {
        consumer = entry.getValue().getClass().getAnnotation(MQConsumer.class);
    }
});

ps:

  • 第一步:檢查是否是 aop 代理對(duì)象
  • 第二步:獲取代理對(duì)象就ok拉??????。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容