在Spring boot中通過ApplicationContext獲取bean失敗
在專案中使用了一個某銀行的支付介面庫,庫中涉及到配置資訊,需要從資料庫中讀取支付配置資訊,由支付介面在呼叫的時候通過反射的方式進行呼叫。
配置類檔案是一個原始碼檔案,可以進行修改,希望在該介面中呼叫專案中的Spring管理的bean(通過Mybatis方式),從而實現資料庫訪問,讀取配置資訊。
在Spring boot中通過反射呼叫的類中通過SpringApplicationContext獲取bean失敗
原因是Springboot中使用了devtool的熱部署功能,導致使用了不同的類載入器,一個是appclassloader,一個是restartClassloader。取消熱部署配置後,可以使用了。
Java類載入器基於三個機制:委託、可見性和單一性。委託機制是指將載入一個類的請求交給父類載入器,如果這個父類載入器不能夠找到或者載入這個類,那麼再載入它。可見性的原理是子類的載入器可以看見所有的父類載入器載入的類,而父類載入器看不到子類載入器載入的類。單一性原理是指僅載入一個類一次,這是由委託機制確保子類載入器不會再次載入父類載入器載入過的類。
相關文章
- Spring在程式碼中獲取bean的幾種方式SpringBean
- Spring Boot package打包失敗Spring BootPackage
- 在專案中獲取Spring的Bean的幾種方式SpringBean
- servlet中手動獲取spring的beanServletSpringBean
- 獲取spring裡的beanSpringBean
- Spring通過factory配置beanSpringBean
- Spring - 獲取ApplicationContext的幾種方式SpringAPPContext
- 通過spring,在專案的任意位置獲取當前RequestSpring
- 在url中通過屬性名獲取屬性值
- Spring學習筆記四: 從Spring容器中獲取BeanSpring筆記Bean
- Autodesk Vault: 獲取授權失敗
- Spring6 當中 獲取 Bean 的四種方式SpringBean
- spring boot factory beanSpring BootBean
- EVCache快取在 Spring Boot中的實戰快取Spring Boot
- 在bean為singleton的情況下,為什麼同一個applicationContext會獲取多個不同的bean例項??BeanAPPContext
- Spring原始碼剖析4:其餘方式獲取Bean的過程分析Spring原始碼Bean
- Spring Boot 樂觀鎖加鎖失敗 - 整合AOPSpring Boot
- appium 獲取混合頁面元素失敗APP
- 在Spring Boot中實現WebSocket實時通訊Spring BootWeb
- spring管理bean的生命週期與spring通過工廠方法配置beanSpringBean
- Spring Boot EL獲取配置檔案中的值的方式Spring Boot
- jmap執行失敗了,怎麼獲取heapdump?
- 【FAQ】獲取Push Token失敗,如何進行排查?
- 獲取導致匯入失敗的資料
- Spring boot 獲取yml檔案工具類Spring Boot
- 通過EPROCESS獲取程式名
- Arch Linux中通過AUR安裝Redis Desktop Manager失敗LinuxRedis
- Spring原始碼剖析4:懶載入的單例Bean獲取過程分析Spring原始碼單例Bean
- Spring Boot 老啟動失敗,這次再也不怕了!Spring Boot
- cookie 中通過 鍵 獲取相對應的 值Cookie
- 在Spring Boot快取API - Code FactorySpring Boot快取API
- 獲取導致匯入失敗的資料(五)
- 獲取導致匯入失敗的資料(四)
- 獲取導致匯入失敗的資料(三)
- 獲取導致匯入失敗的資料(二)
- 通過Spring Boot Webflux實現Reactor KafkaSpring BootWebUXReactKafka
- Spring Boot 通過CORS實現跨域Spring BootCORS跨域
- Spring ApplicationContext講解與獲得SpringAPPContext