一起养成写作习惯!这是我参与「掘金日新计划 · 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}")来读取到对应的参数值。
@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);
}
测试没问题,到这里就已经搞定了
偷懒
有些家伙一天不好好干活就想着偷懒,配置文件如果前缀都一致,那映射的时候是不是得多写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;
}