Springboot項(xiàng)目中如何讓非Spring管理的類獲得一個(gè)注入的Bean
Springboot讓非Spring管理的類獲得一個(gè)注入的Bean
由于業(yè)務(wù)需要,項(xiàng)目中集成了mqtt服務(wù),在mqtt連接中需要設(shè)置個(gè)回調(diào)類,這個(gè)回調(diào)類定義為一個(gè)普通類,不通過Spring管理,但是在回調(diào)類中又需要引入數(shù)據(jù)庫(kù)的操作,
采用通過注解引入的數(shù)據(jù)庫(kù)框架類服務(wù),顯然不能通過簡(jiǎn)單的new Object() 來進(jìn)行調(diào)用,因此需要采用一種方式引入已經(jīng)注入的Bean:
通過各種嘗試以及驗(yàn)證,找到了一種可行的方案
如下所示:
聲明一個(gè)自定義的類
定義一個(gè)ApplicationContext對(duì)象 ,在需要操作的函數(shù)中,通過ApplicationContext對(duì)象引入注入的類即可:
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);
........
}
}
在啟動(dòng)類中
得到ApplicationContext 對(duì)象,然后傳遞到自定義的類中,注意——只能在這個(gè)地方傳入,否則無法正確獲取ApplicationContext 對(duì)象;
@SpringBootApplication
public class Application{
public static void main(String[] args) {
final ApplicationContext applicationContext =
SpringApplication.run(Application.class, args);
MyTest.setApplicationContext(applicationContext);
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis使用注解開發(fā)和無主配置文件開發(fā)的情況
這篇文章主要介紹了MyBatis使用注解開發(fā)和無主配置文件開發(fā)的情況,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Netty分布式ByteBuf使用subPage級(jí)別內(nèi)存分配剖析
這篇文章主要為大家介紹了Netty分布式ByteBuf使用subPage級(jí)別內(nèi)存分配剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
mybatis新增save結(jié)束后自動(dòng)返回主鍵id詳解
這篇文章主要介紹了mybatis新增save結(jié)束后自動(dòng)返回主鍵id詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java的PriorityBlockingQueue優(yōu)先級(jí)阻塞隊(duì)列代碼實(shí)例
這篇文章主要介紹了Java的PriorityBlockingQueue優(yōu)先級(jí)阻塞隊(duì)列代碼實(shí)例,PriorityBlockingQueue顧名思義是帶有優(yōu)先級(jí)的阻塞隊(duì)列,為了實(shí)現(xiàn)按優(yōu)先級(jí)彈出數(shù)據(jù),存入其中的對(duì)象必須實(shí)現(xiàn)comparable接口自定義排序方法,需要的朋友可以參考下2023-12-12
SpringMVC上傳文件的三種實(shí)現(xiàn)方式
本篇文章主要介紹了SpringMVC上傳文件的三種實(shí)現(xiàn)方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12

