暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

apollo是怎么让配置文件优先级max的?

Java Miraculous 2021-06-01
4586

背景:

如果你在apollo上和application.yml配置文件中同时配置了一个相同的key,它读的会是apollo里的值。
  • 一、本地启动apollo项目

注:启动方法参考apollo,这里不再赘述。
  • 1.1、apollo上的配置文件

  • 1.2、本地application.yml中

  • 1.3、启动访问

  • 1.4、为什么会这样?

今天看了apollo的GitHub,上面专门说到了这一点

接下来我们在apollo中搜下这个类PropertySourcesProcessor

先说下PropertySourcesProcessor实现的三个接口:
BeanFactoryPostProcessor:可以通过它对Bean的元信息(即BeanDefinition)进行读取和修改,它的作用点是在Spring Bean实例化之前。
EnvironmentAware:凡注册到Spring容器内的bean,实现了此接口并重写setEnvironment方法后,在工程启动时可以获得application.properties的配置文件配置的属性值。
PriorityOrdered:对象的排序位置
apollo主要利用的是BeanFactoryPostProcessor的特性来加载配置文件的,那它怎么实现优先级的呢?

  • 二、参考apollo中的实现来加载自己的配置文件

  • 2.1、首先定义一个读取配置文件的方法

这里我们读取本地的配置

  • 2.2、自定义一个配置源

  • 2.3、自定义一个属性源处理器

  • 2.4、本地新增一个custom.properties配置文件

  • 2.5、将apollo的配置注释掉

  • 2.6、重启应用,访问接口

  • 2.7、源码

    公众号内回复apollo获取。



    最近正值618,奶粉有活动,买一箱同等优惠券,过期就没有优惠了,需要的朋友不要错过这个机会哈。

文章转载自Java Miraculous,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论