Springboot中PropertySource注解多环境支持以及原理

摘要:Springboot中PropertySource注解的使用一文中,详细讲解了PropertySource注解的使用,通过PropertySource注解去加载指定的资源文件、然后将加载的属性注入到指定的配置类,@value以及@ConfigurationProperties的使用。但是也遗留一个问题,PropertySource注解貌似是不支持多种环境的动态切换?这个问题该如何解决呢?我们需要从源码中看看他到底是否支持。

首先,我们开始回顾一下上节课说的PropertySource注解的使用,实例代码如下:

1 @PropertySource( name="jdbc-bainuo-dev.properties",

2 value={"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8")

我们使用了PropertySource注解中的参数有:name、value、ignoreResourceNotFound、encoding。其实PropertySource注解还有一个参数,那就是factory,该参数默认的值为PropertySourceFactory.class。

PropertySource注解的定义如下:

1 public @interface PropertySource {

2     String name() default "";

3     String[] value();

4     boolean ignoreResourceNotFound() default false;

5     String encoding() default "";

6     Class<? extends PropertySourceFactory> factory() default PropertySourceFactory.class;

7 }

我们不妨先看一下PropertySourceFactory接口是做什么的?该接口的核心定义代码如下:

1 public interface PropertySourceFactory {

2     PropertySource<?> createPropertySource(@Nullable String name, EncodedResource resource) throws IOException;

3 }

上述代码中,PropertySourceFactory接口仅仅提供了一个createPropertySource方法,该方法就是创建PropertySource实例对象的,关于PropertySource的架构可以参考前面的系列

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值