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

mybatis攔截器無法注入spring bean的問題解決

 更新時間:2022年02月04日 10:34:04   作者:康納醬  
本文主要介紹了mybatis攔截器無法注入spring bean的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

公司要整合rabbitmq與mybatis攔截器做一個數(shù)據(jù)同步功能。

整合過程中大部分環(huán)節(jié)都沒什么問題,就是遇到了mybatis攔截器

@Intercepts(@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}))
@Component
public class MyBatisInterceptor implements Interceptor

無法通過注解進(jìn)行注入一些持久層的dao對象,導(dǎo)致dao一直取到空值。

取dao對象目的是要查詢當(dāng)前代碼的執(zhí)行環(huán)境是生產(chǎn)還是測試環(huán)境。

因?yàn)樯a(chǎn)者代碼不需要在測試環(huán)境執(zhí)行,這個區(qū)分的數(shù)據(jù)存在數(shù)據(jù)庫里面?!?/p>

最初,我通過@Autowired是行不通的,因?yàn)?/p>

所以我繼續(xù)尋找方法,于是我找到了用ApplicationContext的方式獲取spring容器企圖劍走偏鋒

結(jié)果發(fā)現(xiàn)每一次執(zhí)行ClassPathXmlApplicationContext都會導(dǎo)致容器重新加載,但是我這個MyBatisInterceptor帶了@Component也會跟著重新加載,導(dǎo)致isGrey清空

甚至導(dǎo)致RabbitmqConfig這個類也跟著重新加載

導(dǎo)致這個監(jiān)聽容易一直重新加載,斷點(diǎn)一直進(jìn)入,這里有用到messageListener這個消息監(jiān)聽器也是一個單例bean對象,也會重新加載

所以會導(dǎo)致測試的時候出現(xiàn)bug,因?yàn)檫@個系統(tǒng)環(huán)境信息sysEnvInfo只需要加載一次

所以ApplicationContext這個方式也是走不通,我不推薦。

思來想去,我發(fā)現(xiàn)  mybatis攔截器  具體實(shí)現(xiàn)邏輯的方法  produceSqlData  里面我用的是  SpringBeanUtils.getBean  方法就能獲取得到數(shù)據(jù),

RabbitTemplate是定義在RabbitmqConfig代碼里的,RabbitmqConfig這個類是個@Configuration注解

但是獲取的數(shù)據(jù)是通過@Bean方式獲取的,SpringBeanUtils.getBean無法獲取到sqlSessionFactory

這里面的dao對象,所以直接

也會報錯,提示sysEnvInfoDao沒有被定義。

所以我思索了下,在@Configuration可以@Autowired成功,那我為何不參考rabbitTemplate一樣把sysEnvInfo也變成一個bean的單例對象呢?

于是我將SysEnvInfo如rabbitTemplate一樣配置成了單例bean對象,通過@Bean注解

在MyBatisInterceptor里面通過SpringBeanUtils.getBean方式獲取,最后實(shí)踐可行,不會出現(xiàn)重復(fù)加載容器的問題,也能在攔截器中取到spring bean

 到此這篇關(guān)于mybatis攔截器無法注入spring bean的問題解決的文章就介紹到這了,更多相關(guān)mybatis攔截器無法注入spring bean內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java老矣 尚能飯否?

    Java老矣 尚能飯否?

    Java老矣,尚能飯否?各類編程語言橫空出世,紛戰(zhàn)不休,然而 TIOBE 的語言排行榜上,Java 卻露出了明顯的頹勢。這個老牌的語言,未來會是怎樣?
    2017-06-06
  • Java并發(fā)線程池實(shí)例分析講解

    Java并發(fā)線程池實(shí)例分析講解

    這篇文章主要介紹了Java并發(fā)線程池實(shí)例,線程池——控制線程創(chuàng)建、釋放,并通過某種策略嘗試復(fù)用線程去執(zhí)行任務(wù)的一個管理框架,從而實(shí)現(xiàn)線程資源與任務(wù)之間一種平衡
    2023-02-02
  • 總結(jié)Java常用加解密方法AES?SHA1?md5

    總結(jié)Java常用加解密方法AES?SHA1?md5

    這篇文章主要為大家介紹了Java常用加密方法AES?SHA1?md5總結(jié)及示例demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • spring cloud 之 Feign 使用HTTP請求遠(yuǎn)程服務(wù)的實(shí)現(xiàn)方法

    spring cloud 之 Feign 使用HTTP請求遠(yuǎn)程服務(wù)的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猻pring cloud 之 Feign 使用HTTP請求遠(yuǎn)程服務(wù)的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java中isAssignableFrom的用法詳解

    Java中isAssignableFrom的用法詳解

    下面小編就為大家?guī)硪黄狫ava中isAssignableFrom的用法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 基于java構(gòu)造方法Vevtor添加元素源碼分析

    基于java構(gòu)造方法Vevtor添加元素源碼分析

    這篇文章主要介紹了基于java構(gòu)造方法中對Vevtor添加元素的源碼分析,有需要的朋友可以借鑒參考下,希望可以對大家有所幫助,祝大家早日升職加薪
    2021-09-09
  • java 后端生成pdf模板合并單元格表格的案例

    java 后端生成pdf模板合并單元格表格的案例

    這篇文章主要介紹了java 后端生成pdf模板合并單元格表格的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Spring源碼解析之推斷構(gòu)造方法

    Spring源碼解析之推斷構(gòu)造方法

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Spring推斷構(gòu)造方法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • SpringSecurity中的EnableWebSecurity注解啟用Web安全詳解

    SpringSecurity中的EnableWebSecurity注解啟用Web安全詳解

    這篇文章主要介紹了SpringSecurity中的EnableWebSecurity注解啟用Web安全詳解,@EnableWebSecurity是Spring?Security用于啟用Web安全的注解,典型的用法是該注解用在某個Web安全配置類上,實(shí)現(xiàn)了接口,需要的朋友可以參考下
    2023-12-12
  • 使用spring boot開發(fā)時java對象和Json對象轉(zhuǎn)換的問題

    使用spring boot開發(fā)時java對象和Json對象轉(zhuǎn)換的問題

    這篇文章主要介紹了使用spring boot開發(fā)時java對象和Json對象轉(zhuǎn)換的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論