spring boot 2.x 加载配置文件

167 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

spring boot 2.x 加载配置文件

抽取了一些可配置的 参数,如果全部都添加到 application.yml中,那经理得削死我。为了生命能安安全全,我妥协了,百度百度,发现挺简单的, 记录一下springboot2加载配置文件的方法,很简单哈

  • @Component: 作用是将当前类实例化到spring容器中

  • @PropertySource: 为了告知springboot加载自定义的配置文件,springboot默认会自动加载application.yml文件,如果参数信息直接写在这个文件里,则不需要显式加载。

  • @Value: 指定目标属性文件中的名称

创建配置文件实体类

如:下面列子中,我需要加载datasync.properties文件中的参数,先创建一个实体类,在实体类上增加@Component,然后在增加@PropertySource(value ={"classpath:/datasync.properties"}),已经加载到datasync.properties文件了 ,在实体类中增加 @Value("${hjjc.sync.open}")来读取到对应的参数值。

image.png

image.png


@Component
@PropertySource(value ={"classpath:datasync.yml"})
public  class TestConstant {
    //批量更新大小
    public static final int BATCH_SIZE = 500;
    //应用凭证
    @Value("${hjjc.app.id}")
    public   String HJJC_APPID;
    //应用密钥
//    @Value("${hjjc.app.secret}")
    public  String HJJC_APPSECRET;

}

配置文件都加载完毕之后,只要在对应的文件中注入刚才创建的实体类使用即可。

@Autowired
private Constant constant;

public void test(){
    System.out.println(constant.HJJC_APPSECRET);
}

测试没问题,到这里就已经搞定了

image.png

偷懒

有些家伙一天不好好干活就想着偷懒,配置文件如果前缀都一致,那映射的时候是不是得多写n遍前缀,所以需要在配置文件实体类上加上前缀 @ConfigurationProperties

@Component
@ConfigurationProperties(prefix = "hjjc.app")
@PropertySource(value ={"classpath:datasync.yml"})
public  class TestConstant {
    //批量更新大小
    public static final int BATCH_SIZE = 500;
    //应用凭证
    @Value("${id}")
    public   String HJJC_APPID;
    //应用密钥
    @Value("${secret}")
//    @Value("${hjjc.app.secret}")
    public  String HJJC_APPSECRET;

}

image.png