SpringBoot項(xiàng)目如何將Bean注入到普通類(lèi)中
如何將Bean注入到普通類(lèi)中
Spring管理的類(lèi)獲得一個(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)尋找同類(lèi)型參數(shù)為其傳值。
如Controller中注入Bean可以這么寫(xiě):
@RestController public class TestController { @Autowired public TestBean bean;// 配置文件bean }
非Spring管理的類(lèi)獲得一個(gè)注入的Bean方式
上述通過(guò)@Autowired注解注入的方式只可以用在Spring管理的類(lèi)中,而普通類(lèi)中通過(guò)這樣的方式獲得的Bean為null。
可以使用Spring上下文ApplicationContext獲得Bean的方式,將Bean注入到普通類(lèi)中
普通類(lèi)中通過(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)類(lèi)
將ApplicationContext傳入普通類(lèi)中
@SpringBootApplication public class TestrApplication { public static void main(String[] args) { final ApplicationContext applicationContext = SpringApplication.run(TestApplication.class, args); // 將上下文傳入Test類(lèi)中,用于檢測(cè)tcp連接是否正常 Test.setApplicationContext(applicationContext); } }
這樣一個(gè)Spring的Bean就可以注入到普通類(lèi)中使用了.
在普通類(lèi)中如何獲取Bean節(jié)點(diǎn)
/* * 文件名:SpringContextUtil.java * 描述:獲取bean實(shí)例工具類(lèi) * 修改人: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í)例工具類(lèi) * @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ù)用戶(hù)對(duì)字段選擇和輸入,動(dòng)態(tài)生成一條sql執(zhí)行。接下來(lái)通過(guò)本文給大家分享MyBatis動(dòng)態(tài)SQL入門(mén)示例代碼,一起看看吧2017-03-03Spring?@Conditional通過(guò)條件控制bean注冊(cè)過(guò)程
這篇文章主要為大家介紹了Spring?@Conditional通過(guò)條件控制bean注冊(cè)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Java微服務(wù)開(kāi)發(fā)之Swagger詳解
Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。總體目標(biāo)是使客戶(hù)端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步2021-10-10利用Jackson實(shí)現(xiàn)數(shù)據(jù)脫敏的示例詳解
在我們的企業(yè)項(xiàng)目中,為了保護(hù)用戶(hù)隱私,數(shù)據(jù)脫敏成了必不可少的操作,那么我們?cè)趺磧?yōu)雅的利用Jackson實(shí)現(xiàn)數(shù)據(jù)脫敏呢,本文就來(lái)和大家詳細(xì)聊聊,希望對(duì)大家有所幫助2023-05-05Eclipse下使用ANT編譯提示OutOfMemory的解決方法
由于需要使用ANT編譯的代碼比較多,特別是在第一次變異的時(shí)候,會(huì)出現(xiàn)OutOfMemory錯(cuò)誤。并提示更改ANT_OPTS設(shè)定。2009-04-04java+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