Springboot項目中如何讓非Spring管理的類獲得一個注入的Bean
Springboot讓非Spring管理的類獲得一個注入的Bean
由于業(yè)務需要,項目中集成了mqtt服務,在mqtt連接中需要設置個回調(diào)類,這個回調(diào)類定義為一個普通類,不通過Spring管理,但是在回調(diào)類中又需要引入數(shù)據(jù)庫的操作,
采用通過注解引入的數(shù)據(jù)庫框架類服務,顯然不能通過簡單的new Object() 來進行調(diào)用,因此需要采用一種方式引入已經(jīng)注入的Bean:
通過各種嘗試以及驗證,找到了一種可行的方案
如下所示:
聲明一個自定義的類
定義一個ApplicationContext對象 ,在需要操作的函數(shù)中,通過ApplicationContext對象引入注入的類即可:
public class MyTest{
private static ApplicationContext applicationContext;
public static void setApplicationContext(ApplicationContext context) {
applicationContext = context;
}
public static void doSomething() {
RestTemplate _restTemplate = applicationContext.getBean(RestTemplate.class);
........
}
}
在啟動類中
得到ApplicationContext 對象,然后傳遞到自定義的類中,注意——只能在這個地方傳入,否則無法正確獲取ApplicationContext 對象;
@SpringBootApplication
public class Application{
public static void main(String[] args) {
final ApplicationContext applicationContext =
SpringApplication.run(Application.class, args);
MyTest.setApplicationContext(applicationContext);
}
}
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java解決LocalDateTime傳輸前端為時間的數(shù)組
本文主要介紹了Java解決LocalDateTime傳輸前端為時間的數(shù)組,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-03-03
SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)
這篇文章主要介紹了SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
Java Spring ApplicationEvent 代碼示例解析
本文解析了Spring事件機制,涵蓋核心概念(發(fā)布-訂閱/觀察者模式)、代碼實現(xiàn)(事件定義、發(fā)布、監(jiān)聽)及高級應用(異步處理、事務綁定、執(zhí)行順序),對Java Spring ApplicationEvent概念相關知識感興趣的朋友一起看看吧2025-06-06
Java BufferedImage轉換為MultipartFile方式
這篇文章主要介紹了Java BufferedImage轉換為MultipartFile方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
關于Java8的foreach中使用return/break/continue產(chǎn)生的問題
這篇文章主要介紹了關于Java8的foreach()中使用return/break/continue產(chǎn)生的問題,在使用foreach()處理集合時不能使用break和continue這兩個方法,也就是說不能按照普通的for循環(huán)遍歷集合時那樣根據(jù)條件來中止遍歷,需要的朋友可以參考下2023-10-10

