Java中EnvironmentAware 接口的作用
研究背景
我們在搞新的配置中心Nacos的時候,為了獲取新的配置中心的配置文件中配置的 dataId,以及配置 serverAddr、nacosGroup 等信息,所以才研究 EnvironmentAware 接口的如果寫死話那豈不是太不像話了,那就太多的魔法值了,所以我們可以通過 environmentAware 這個接口進行從配置文件中【application.properties】獲取配置的配置中心的信息詳情
nacos.config.server-addr=IP地址 nacos.config.data-id=api.properties nacos.config.group=DEFAULT_GROUP nacos.config.namespace=public nacos.config.username=nacos nacos.config.password=nacos nacos.config.auto-refresh=true nacos.config.type=properties nacos.config.bootstrap.enable=true nacos.config.bootstrap.log-enable=true
之前沒有注意過這個接口【但是在之前看多租戶的工具源碼的時候看到過這個接口】,所以通過本次項目中的需求來好好研究一下這個接口的問題
源碼介紹以及使用方法
其實說白了就是哪個接口需要獲取配置,那么那個接口就需要進行實現(xiàn)該接口 EnvironmentAware并實現(xiàn)里面的 setEnvironment方法
/** 其實說白了就是哪個接口需要獲取配置,那么那個接口就需要進行實現(xiàn)該接口并實現(xiàn)里面的set方法 */ public interface EnvironmentAware extends Aware { void setEnvironment(Environment environment); }
作用
所有注冊到 Spring容器內(nèi)的 bean,只要該bean 實現(xiàn)了 EnvironmentAware接口,并且進行重寫了setEnvironment方法的情況下,那么在工程啟動時就可以獲取得 application.properties 的配置文件配置的屬性值,這樣就不用我們將魔法值寫到代碼里面了
使用方式代碼示例
通過 NacosController 實現(xiàn)了 EnvironmentAware 這個接口,并且實現(xiàn)了 setEnvironment 方法,之后通過 environment 這個對象進行配置信息獲取
@RestController @RequestMapping("/nacos") public class NacosController implements EnvironmentAware { private final static String NACOS_DATA_ID = "nacos.config.data-id"; private final static String NACOS_GROUP = "nacos.config.group"; private static String dataId = ""; private static String group = ""; @NacosInjected private ConfigService configService; @Autowired private Environment environment; @Override public void setEnvironment(Environment environment) { this.environment = environment; } // 通過 environment 獲取配置信息 @PostConstruct private void init() { dataId = environment.getProperty(NACOS_DATA_ID); group = environment.getProperty(NACOS_GROUP); } /** * 發(fā)布配置 * @return */ @RequestMapping(value = "/publishConfig",method = RequestMethod.GET) public boolean publishConfig() { boolean res = false; try { res = configService.publishConfig(dataId, group, "發(fā)布配置"); } catch (NacosException e) { e.printStackTrace(); } System.out.println(res); return res; } }
成功獲取到了配置信息,我們在配置文件中設(shè)置的 nacos.config.data-id=api.properties,所以這里獲取的值是正確
總結(jié)
- 哪個類需要獲取配置信息那么該類就需要進行該接口 environmentAware 的實現(xiàn)
- 實現(xiàn) environmentAware 這個接口所提供的方法 setEnvironment()
- 通過 environment 進行配置信息獲取
到此這篇關(guān)于Java中EnvironmentAware 接口的作用的文章就介紹到這了,更多相關(guān)Java EnvironmentAware 接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實現(xiàn)找出兩個文件中相同的單詞(兩種方法)
這篇文章主要介紹了java實現(xiàn)找出兩個文件中相同的單詞(兩種方法),需要的朋友可以參考下2020-08-08Java規(guī)則引擎easy-rules詳細(xì)介紹
本文主要介紹了Java規(guī)則引擎easy-rules詳細(xì)介紹,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01Mybatis 實現(xiàn)動態(tài)組裝查詢條件,仿SQL模式
這篇文章主要介紹了Mybatis 實現(xiàn)動態(tài)組裝查詢條件,仿SQL模式的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06SpringBoot2零基礎(chǔ)到精通之映射與常用注解請求處理
SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學(xué)習(xí)映射、常用注解和方法參數(shù)的小技巧2022-03-03