SpringBoot項(xiàng)目如何將Bean注入到普通類中
如何將Bean注入到普通類中
Spring管理的類獲得一個(gè)注入的Bean方式
@Autowired是一種注解,可以對(duì)成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,來(lái)完成自動(dòng)裝配的工作,自動(dòng)執(zhí)行當(dāng)前方法,如果方法有參數(shù),會(huì)在IOC容器中自動(dòng)尋找同類型參數(shù)為其傳值。
如Controller中注入Bean可以這么寫(xiě):
@RestController
public class TestController {
@Autowired
public TestBean bean;// 配置文件bean
}
非Spring管理的類獲得一個(gè)注入的Bean方式
上述通過(guò)@Autowired注解注入的方式只可以用在Spring管理的類中,而普通類中通過(guò)這樣的方式獲得的Bean為null。
可以使用Spring上下文ApplicationContext獲得Bean的方式,將Bean注入到普通類中
普通類中通過(guò)ApplicationContext上下文獲得Bean
public class Test{
//聲明要注入的Bean變量
private static TestBean bean;
// 通過(guò)applicationContext上下文獲取Bean
public static void setApplicationContext(ApplicationContext applicationContext) {
bean = applicationContext.getBean(TestBean.class);
}
}
修改SpringBoot啟動(dòng)類
將ApplicationContext傳入普通類中
@SpringBootApplication
public class TestrApplication {
public static void main(String[] args) {
final ApplicationContext applicationContext = SpringApplication.run(TestApplication.class, args);
// 將上下文傳入Test類中,用于檢測(cè)tcp連接是否正常
Test.setApplicationContext(applicationContext);
}
}
這樣一個(gè)Spring的Bean就可以注入到普通類中使用了.
在普通類中如何獲取Bean節(jié)點(diǎn)
/*
* 文件名:SpringContextUtil.java
* 描述:獲取bean實(shí)例工具類
* 修改人:Wang Chinda
* 修改時(shí)間:2018/10/30
* 修改內(nèi)容:新增
*/
package com.chinda.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* 獲取bean實(shí)例工具類
* @author Wang Chinda
* @date 2018/10/30
* @see
* @since 1.0
*/
@Component
public class SpringContextUtil implements ApplicationContextAware {
/**
* 上下文對(duì)象實(shí)例
*/
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
/**
* 獲取applicationContext
*
* @return
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 通過(guò)name獲取Bean.
*
* @param name
* @return
*/
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
/**
* 通過(guò)class獲取Bean.
*
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
/**
* 通過(guò)name以及Class返回指定的Bean
*
* @param name
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
史上最簡(jiǎn)單的MyBatis動(dòng)態(tài)SQL入門(mén)示例代碼
動(dòng)態(tài)sql,可以根據(jù)用戶對(duì)字段選擇和輸入,動(dòng)態(tài)生成一條sql執(zhí)行。接下來(lái)通過(guò)本文給大家分享MyBatis動(dòng)態(tài)SQL入門(mén)示例代碼,一起看看吧2017-03-03
Spring?@Conditional通過(guò)條件控制bean注冊(cè)過(guò)程
這篇文章主要為大家介紹了Spring?@Conditional通過(guò)條件控制bean注冊(cè)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Java微服務(wù)開(kāi)發(fā)之Swagger詳解
Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步2021-10-10
利用Jackson實(shí)現(xiàn)數(shù)據(jù)脫敏的示例詳解
在我們的企業(yè)項(xiàng)目中,為了保護(hù)用戶隱私,數(shù)據(jù)脫敏成了必不可少的操作,那么我們?cè)趺磧?yōu)雅的利用Jackson實(shí)現(xiàn)數(shù)據(jù)脫敏呢,本文就來(lái)和大家詳細(xì)聊聊,希望對(duì)大家有所幫助2023-05-05
Eclipse下使用ANT編譯提示OutOfMemory的解決方法
由于需要使用ANT編譯的代碼比較多,特別是在第一次變異的時(shí)候,會(huì)出現(xiàn)OutOfMemory錯(cuò)誤。并提示更改ANT_OPTS設(shè)定。2009-04-04
java+mysql實(shí)現(xiàn)商品搶購(gòu)功能
這篇文章主要為大家詳細(xì)介紹了java+mysql實(shí)現(xiàn)商品搶購(gòu)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
詳解java中的PropertyChangeSupport與PropertyChangeListener
這篇文章主要介紹了詳解java中的PropertyChangeSupport與PropertyChangeListener的相關(guān)資料,需要的朋友可以參考下2017-09-09

