Springboot獲取bean實例之SpringContextUtil詳解
Springboot獲取bean實例-SpringContextUtil
1、工具類 SpringContextUtil
package XXXXXXXX; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; /** * * 獲取spring容器,以訪問容器中定義的其他bean */ @Component public class SpringContextUtil implements ApplicationContextAware { // Spring應(yīng)用上下文環(huán)境 private static ApplicationContext applicationContext; /** * 實現(xiàn)ApplicationContextAware接口的回調(diào)方法,設(shè)置上下文環(huán)境 * * @param applicationContext */ public void setApplicationContext(ApplicationContext applicationContext) { SpringContextUtil.applicationContext = applicationContext; } /** * @return ApplicationContext */ public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 通過name獲取對象 */ public static Object getBean(String name) throws BeansException { return applicationContext.getBean(name); } }
2、要注入的bean
package XXXXX; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class ShardingVariableConfig { @Value("${sharding.data.node}") private int dataNode; @Value("${sharding.table.node}") private int tableNode; //獲取分庫參數(shù) public int getDataNode(){ return this.dataNode; } //獲取分表參數(shù) public int getTableNode(){ return this.tableNode; } }
3、yml配置
4、方法中調(diào)用
ShardingVariableConfig valueService = (ShardingVariableConfig) SpringContextUtil.getBean("shardingVariableConfig");//bean的名稱 int dataNode = valueService.getDataNode();
注意事項:
工具類SpringContextUtil和JavaBean都要加注解@Component,否則會Spring無法掃描到二者的位置
總結(jié)
通過此方法可以在任何地方調(diào)用JavaBean,解決@Autowired或@Resource無法注入的問題,無法直接通過@Value在某些類中取到值問題
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
用Java代碼實現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)的基本方法歸納
這篇文章主要介紹了用Java代碼實現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)的基本方法歸納,各種算法的實現(xiàn)也是ACM上經(jīng)常出現(xiàn)的題目,是計算機學(xué)習(xí)的基本功,需要的朋友可以參考下2015-08-08springboot連接redis并動態(tài)切換database的實現(xiàn)方法
這篇文章主要介紹了springboot連接redis并動態(tài)切換database,本文主為通過修改ConnectionFactory從而達到動態(tài)切換database的效果,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03SpringMVC+EasyUI實現(xiàn)頁面左側(cè)導(dǎo)航菜單功能
這篇文章主要介紹了SpringMVC+EasyUI實現(xiàn)頁面左側(cè)導(dǎo)航菜單功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09Spring Boot開箱即用可插拔實現(xiàn)過程演練與原理解析
本文通過深入探討Spring Boot的背景歷史、業(yè)務(wù)場景、功能點以及底層原理,并通過Java代碼手寫模擬了Spring Boot的啟動過程和自動配置功能,為開發(fā)者提供了一個全面的理解,感興趣的朋友跟隨小編一起看看吧2024-11-11Elasticsearch學(xué)習(xí)之Terms?set?查詢
這篇文章主要為大家介紹了Elasticsearch學(xué)習(xí)Terms?set?查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02