SpringBoot項(xiàng)目如何將Bean注入到普通類中
如何將Bean注入到普通類中
Spring管理的類獲得一個(gè)注入的Bean方式
@Autowired是一種注解,可以對成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,來完成自動(dòng)裝配的工作,自動(dòng)執(zhí)行當(dāng)前方法,如果方法有參數(shù),會(huì)在IOC容器中自動(dòng)尋找同類型參數(shù)為其傳值。
如Controller中注入Bean可以這么寫:
@RestController public class TestController { @Autowired public TestBean bean;// 配置文件bean }
非Spring管理的類獲得一個(gè)注入的Bean方式
上述通過@Autowired注解注入的方式只可以用在Spring管理的類中,而普通類中通過這樣的方式獲得的Bean為null。
可以使用Spring上下文ApplicationContext獲得Bean的方式,將Bean注入到普通類中
普通類中通過ApplicationContext上下文獲得Bean
public class Test{ //聲明要注入的Bean變量 private static TestBean bean; // 通過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類中,用于檢測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 { /** * 上下文對象實(shí)例 */ private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } /** * 獲取applicationContext * * @return */ public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 通過name獲取Bean. * * @param name * @return */ public static Object getBean(String name) { return getApplicationContext().getBean(name); } /** * 通過class獲取Bean. * * @param clazz * @param <T> * @return */ public static <T> T getBean(Class<T> clazz) { return getApplicationContext().getBean(clazz); } /** * 通過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)文章
史上最簡單的MyBatis動(dòng)態(tài)SQL入門示例代碼
動(dòng)態(tài)sql,可以根據(jù)用戶對字段選擇和輸入,動(dòng)態(tài)生成一條sql執(zhí)行。接下來通過本文給大家分享MyBatis動(dòng)態(tài)SQL入門示例代碼,一起看看吧2017-03-03Spring?@Conditional通過條件控制bean注冊過程
這篇文章主要為大家介紹了Spring?@Conditional通過條件控制bean注冊過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02利用Jackson實(shí)現(xiàn)數(shù)據(jù)脫敏的示例詳解
在我們的企業(yè)項(xiàng)目中,為了保護(hù)用戶隱私,數(shù)據(jù)脫敏成了必不可少的操作,那么我們怎么優(yōu)雅的利用Jackson實(shí)現(xiàn)數(shù)據(jù)脫敏呢,本文就來和大家詳細(xì)聊聊,希望對大家有所幫助2023-05-05Eclipse下使用ANT編譯提示OutOfMemory的解決方法
由于需要使用ANT編譯的代碼比較多,特別是在第一次變異的時(shí)候,會(huì)出現(xiàn)OutOfMemory錯(cuò)誤。并提示更改ANT_OPTS設(shè)定。2009-04-04詳解java中的PropertyChangeSupport與PropertyChangeListener
這篇文章主要介紹了詳解java中的PropertyChangeSupport與PropertyChangeListener的相關(guān)資料,需要的朋友可以參考下2017-09-09