SpringBoot使用@Transactional的類手動注入失敗

一、手動注入失敗解決方案
    修改SpringBoot的默認動態代理模式,默認的是Java的動態代理模式,需要修改爲CGLIB動態代理模式;
    在application.properties加入如下配置:

#開啓CGLIB動態代理模式
spring.aop.proxy-target-class=true

 二、手動注入bean

https://blog.csdn.net/weixin_36524613/article/details/85258937

 三、動態代理與靜態代理

    靜態代理:
    由程序員創建或特定工具自動生成源代碼,再對其編譯。在程序運行前,代理類的.class文件就已經存在了。 


    動態代理:
    在程序運行時,運用反射機制動態創建而成。

 

 四、jdk動態代理與cglib動態代理

   JDK的動態代理;
   JDK的動態代理依靠接口實現,如果有些類並沒有實現接口,則不能使用JDK代理,這就要使用cglib動態代理了。 

   Cglib動態代理 ;
   JDK的動態代理機制只能代理實現了接口的類,而不能實現接口的類就不能實現JDK的動態代理,cglib是針對類來實現代理          的,他的原理是對指定的目標類生成一個子類,並覆蓋其中方法實現增強,但因爲採用的是繼承,所以不能對final修飾的類進      行代理。 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章