Java中EnvironmentAware|Java中EnvironmentAware 接口的作用
目录
- 研究背景
- 源码介绍以及使用方法
- 作用
- 使用方式代码示例
- 总结
研究背景 【Java中EnvironmentAware|Java中EnvironmentAware 接口的作用】我們在搞新的配置中心Nacos的時候,为了获取新的配置中心的配置文件中配置的 dataId,以及配置 serverAddr、nacosGroup 等信息,所以才研究 EnvironmentAware 接口的如果写死话那岂不是太不像话了,那就太多的魔法值了,所以我们可以通过 environmentAware 这个接口进行从配置文件中【application.properties】获取配置的配置中心的信息详情
nacos.config.server-addr=IP地址nacos.config.data-id=api.propertiesnacos.config.group=DEFAULT_GROUPnacos.config.namespace=publicnacos.config.username=nacosnacos.config.password=nacosnacos.config.auto-refresh=truenacos.config.type=propertiesnacos.config.bootstrap.enable=truenacos.config.bootstrap.log-enable=true
之前没有注意过这个接口【但是在之前看多租户的工具源码的时候看到过这个接口】,所以通过本次项目中的需求来好好研究一下这个接口的问题
源码介绍以及使用方法 其实说白了就是哪个接口需要获取配置,那么那个接口就需要进行实现该接口 EnvironmentAware并实现里面的 setEnvironment方法
/**其实说白了就是哪个接口需要获取配置,那么那个接口就需要进行实现该接口并实现里面的set方法*/public interface EnvironmentAware extends Aware { void setEnvironment(Environment environment); }
作用 所有注册到 Spring容器内的 bean,只要该bean 实现了 EnvironmentAware接口,并且进行重写了setEnvironment方法的情况下,那么在工程启动时就可以获取得 application.properties 的配置文件配置的属性值,这样就不用我们将魔法值写到代码里面了
使用方式代码示例 通过 NacosController 实现了 EnvironmentAware 这个接口,并且实现了 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 = ""; @NacosInjectedprivate ConfigService configService; @Autowiredprivate Environment environment; @Overridepublic void setEnvironment(Environment environment) {this.environment = environment; }// 通过 environment 获取配置信息@PostConstructprivate void init() {dataId = environment.getProperty(NACOS_DATA_ID); group = environment.getProperty(NACOS_GROUP); }/*** 发布配置* @return*/@RequestMapping(value = "https://www.it610.com/publishConfig",method = RequestMethod.GET)public boolean publishConfig() {boolean res = false; try {res = configService.publishConfig(dataId, group, "发布配置"); } catch (NacosException e) {e.printStackTrace(); }System.out.println(res); return res; }}
成功获取到了配置信息,我们在配置文件中设置的 nacos.config.data-id=api.properties,所以这里获取的值是正确
文章图片
总结
- 哪个类需要获取配置信息那么该类就需要进行该接口 environmentAware 的实现
- 实现 environmentAware 这个接口所提供的方法 setEnvironment()
- 通过 environment 进行配置信息获取
推荐阅读
- LeetCode5最大回文子串(中心扩散法)
- 利用JavaScript实现ISO周日历
- Python中安装库的常用方法介绍
- vue格式化element表格中的时间为指定格式
- #|docker-compose中变量的使用
- 如何给爱情“|如何给爱情“ 保鲜”()
- 信息传播中,我们扮演是什么角色()
- 投稿|中国锂王“心狠手辣”
- 如何在世俗生活中,获得理解,拥有幸福(且看《太聪明所以不幸福》)
- 阿里员工的Java问题排查工具单