SpringBoot項目如何將Bean注入到普通類中
如何將Bean注入到普通類中
Spring管理的類獲得一個注入的Bean方式
@Autowired是一種注解,可以對成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,來完成自動裝配的工作,自動執(zhí)行當(dāng)前方法,如果方法有參數(shù),會在IOC容器中自動尋找同類型參數(shù)為其傳值。
如Controller中注入Bean可以這么寫:
@RestController
public class TestController {
@Autowired
public TestBean bean;// 配置文件bean
}
非Spring管理的類獲得一個注入的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啟動類
將ApplicationContext傳入普通類中
@SpringBootApplication
public class TestrApplication {
public static void main(String[] args) {
final ApplicationContext applicationContext = SpringApplication.run(TestApplication.class, args);
// 將上下文傳入Test類中,用于檢測tcp連接是否正常
Test.setApplicationContext(applicationContext);
}
}
這樣一個Spring的Bean就可以注入到普通類中使用了.
在普通類中如何獲取Bean節(jié)點
/*
* 文件名:SpringContextUtil.java
* 描述:獲取bean實例工具類
* 修改人:Wang Chinda
* 修改時間: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實例工具類
* @author Wang Chinda
* @date 2018/10/30
* @see
* @since 1.0
*/
@Component
public class SpringContextUtil implements ApplicationContextAware {
/**
* 上下文對象實例
*/
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);
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java dom4j創(chuàng)建解析xml文檔過程解析
這篇文章主要介紹了Java dom4j創(chuàng)建解析xml文檔過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07
Java使用組件編寫窗口實現(xiàn)網(wǎng)上文件下載
這篇文章主要為大家詳細(xì)介紹了Java使用組件編寫窗口實現(xiàn)網(wǎng)上文件下載的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Java修改eclipse中web項目的server部署路徑問題
這篇文章主要介紹了Java修改eclipse中web項目的server部署路徑,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
spring?boot+vue實現(xiàn)JSAPI微信支付的完整步驟
JSAPI支付是用戶在微信中打開商戶的H5頁面,商戶在H5頁面通過調(diào)用微信支付提供的JSAPI接口調(diào)起微信支付模塊完成支付,下面這篇文章主要給大家介紹了關(guān)于spring?boot+vue實現(xiàn)JSAPI微信支付的相關(guān)資料,需要的朋友可以參考下2022-05-05
Redis Java Lettuce驅(qū)動框架原理解析
這篇文章主要介紹了Redis Java Lettuce驅(qū)動框架原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12
基于spring AOP @Around @Before @After的區(qū)別說明
這篇文章主要介紹了基于spring AOP @Around @Before @After的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
如何利用Java使用AOP實現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換
這篇文章主要介紹了如何利用Java使用AOP實現(xiàn)數(shù)據(jù)字典轉(zhuǎn)換,AOP也是我們常說的面向切面編程,AOP在我們開發(fā)過程中應(yīng)用也比較多,在這里我們就基于AOP來實現(xiàn)一個數(shù)據(jù)字典轉(zhuǎn)換的案例2022-06-06

