Java中EnvironmentAware 接口的作用

作者:沙漠中的曼陀罗 时间:2023-04-15 16:11:12 

研究背景

    我們在搞新的配置中心Nacos的時候,为了获取新的配置中心的配置文件中配置的 dataId,以及配置 serverAddrnacosGroup 等信息,所以才研究 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

    之前没有注意过这个接口【但是在之前看多租户的工具源码的时候看到过这个接口】,所以通过本次项目中的需求来好好研究一下这个接口的问题

源码介绍以及使用方法

    其实说白了就是哪个接口需要获取配置,那么那个接口就需要进行实现该接口 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 = "";

@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);
   }

/**
    * 发布配置
    * @return
    */
   @RequestMapping(value = "/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,所以这里获取的值是正确

Java中EnvironmentAware 接口的作用

总结

  • 哪个类需要获取配置信息那么该类就需要进行该接口 environmentAware 的实现

  • 实现 environmentAware 这个接口所提供的方法 setEnvironment()

  • 通过 environment 进行配置信息获取

来源:https://juejin.cn/post/7108641851120287775

标签:Java,EnvironmentAware,接口
0
投稿

猜你喜欢

  • java上乘武功入门--反射

    2021-06-08 21:32:27
  • Toolbar制作菜单条过程详解

    2022-11-29 04:13:59
  • SpringBoot2.0集成MQTT消息推送功能实现

    2022-02-28 01:55:04
  • java文件读写工具类分享

    2023-07-30 21:04:19
  • springboot调用支付宝第三方接口(沙箱环境)

    2023-11-25 06:12:08
  • C#归并排序的实现方法(递归,非递归,自然归并)

    2023-10-03 01:00:36
  • java以json格式向后台服务器接口发送请求的实例

    2023-05-01 01:47:08
  • Kotlin利用Regex如何构建正则表达式详解

    2022-12-25 18:31:10
  • java实现导出Excel的功能

    2022-07-17 15:57:28
  • Java实现的模糊匹配某文件夹下的文件并删除功能示例

    2022-02-28 13:51:46
  • Android实现页面跳转的全过程记录

    2023-08-16 21:06:08
  • 详解C#如何优雅地终止线程

    2023-11-21 11:41:31
  • C# Newtonsoft.Json 解析多嵌套json 进行反序列化的实例

    2022-04-09 11:23:13
  • Android仿qq分组管理的第三方库

    2023-08-27 05:31:21
  • Android实现价格走势自定义曲线图

    2023-04-03 23:15:06
  • Android中RecyclerView 滑动时图片加载的优化

    2021-07-29 09:58:12
  • Java内存溢出案例模拟和原理分析过程

    2023-04-09 07:27:48
  • c# 通过代码开启或关闭防火墙

    2021-12-11 19:53:20
  • java 如何实现正确的删除集合中的元素

    2022-08-03 17:44:31
  • Java中自然排序和比较器排序详解

    2022-09-04 21:04:49
  • asp之家 软件编程 m.aspxhome.com