立什么flag,都是要倒的(摔!
果然就是过个年,开年来项目一来,二月份的博客就欠下了,三月即将结束,惴惴不安,厚着脸皮写个最近用到的,之前没找到很好的资料(大概是搜商颇低导致的)来说这一块的东西:spring自定义配置文件的部署。
文章目录
1、序
背景:有个小项目需要后台,俺顶着Java菜逼的头衔接下来了,被男票疯狂安利spring boot,于是(被逼无奈)开始了边学边开发的躺坑之路……真香,资料超多,超好用!!!
电厂的项目,用了公司自己开发的实时数据库,后台这边就涉及到很多测点的信息需要存储到配置文件(为什么不是关系数据库真的不要问我),并且希望在部署的时候方便修改,考虑到内容颇多,放在application-pro.yml中实在不合适,就加了个point.yml。倒不是因为现场测点信息会变才需要更改,更多的是突然一拍脑袋,发现手抖写错了?
首先,因为一不小心变成了xxx.yml玩家,好好用哦,没能回去xxx.properties,传说中官方不支持像加载xxx.properties配置文件那样使用注解@PropertySource("classpath:xxx.properties")
的方式加载yml配置文件,这里要说的就是加载自定义yml文件的方法。
官方说明:
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-yaml-shortcomings
加载自定义xxx.properties文件的方法参考这位大佬的文章哦:
springBoot基础系列–properties配置
注意:之前在找多数据源配置的资料时,就因为资料对应的spring boot版本差异搞得很郁闷,请务必注意俺用的版本是:
spring boot 2.13
2、加载自定义yml文件
spring boot的资料非常多,多到非常容易不用动脑就解决了问题呢~项目做完之后冷静下来,觉得还是应该验证一下,毕竟打脸是为了以后有头有脸。
2.1、使用@PropertiesSource注解读取yml配置文件-简单版
按照上面给出的官宣,这条路是不行的。因为没看到文档对应的版本号,还是试一下:
# 配置文件 point.yml
id: 2233
name: Ellie
(呃,这种信息为啥要叫point啊啊啊!
// 配置对应的config类
@Data
@Configuration
@PropertySource(value = {"classpath:point.yml"})
@ConfigurationProperties()
public class TestPoint {
private int id;
private String name;
@Override
public String toString() {
return "TestPoint{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
随手糊了个controller来测试
@RestController
public class TestConfigController {
@Resource
TestPoint testPoint;
@ApiOperation("测试 配置文件")
@RequestMapping(value = "/config")
public ResultBean<String> testConfig() {
return ResultBeanUtil.makeOkResp(testPoint.toString());
}
}
postman搞起来
都挺好!
所以如果只是要读取这样简单的信息的话,直接使用注解@PropertiesSource
是可以的,官方说的不确定的影响我也不知道是啥哦。
2.2、使用@PropertiesSource注解读取yml配置文件-不简单版?
加个list<基础类型>看看。
# point.yml
id: 2233
name: Ellie
cards:
- XD02101263
- ZY8965
- GX0009
// 配置类
@Data
@Configuration
@PropertySource(value = {"classpath:point.yml"})
@ConfigurationProperties()
public class TestPoint {
private int id;
private String name;
private List<String> cards;
@Override
public String toString() {
return "TestPoint{" +
"id=" + id +
", name='" + name + '\'' +
", cards=" + cards +
'}';
}
}
postma