小伙伴们都知道,在 Spring Boot 中,配置文件是 application.properties 或者 application.yaml,这个名为 application 的配置文件,无论是 properties 格式还是 yaml 格式,都会被 Spring Boot 容器自动加载。
然而很多时候我们会有一些额外的配置,这些额外的配置可能并非系统配置,所以我们不想将之放在 application.properties 或者 application.yaml 中,想搞一个单独的配置文件来处理,这时候就分情况了。
对于 properties 格式的配置文件,我们可以随心所欲的自定义配置文件,例如在 resources 目录下新建一个 data.properties 的配置文件用来配置数据库的信息,像下面这样:
db.username=root
db.password=123
db.url=jdbc:mysql:///vhr
然后在 Java 代码中,利用 @PropertySource 和 @ConfigurationProperties 两个注解来加载配置文件:
@PropertySource("classpath:data.properties")
@ConfigurationProperties(prefix = "db")
public class DbProperties {
private String username;
private String password;
private String url;
//省略 getter/setter
}
@PropertySource 就是用来加载一个自定义的 properties 配置文件,这是 Spring 中就有的功能,而不是 Spring Boot 的功能。
所以,如果你使用了 properties 格式的配置文件,那么就可以非常方便的实现自定义配置文件了,甚至可以将不同的配置文件分门别类,管理的井井有条。
问题实际上是出在 yaml 这一块。
小伙伴们知道,对于 YAML 格式的配置而言,它其实是没有一个类似于 @PropertySource 注解的东西的,也就是说 YAML 配置,你只能写在 application.yaml 中,不能写在其他地方。要是写在其他地方,就没法加载了,其实也不是没法加载,可以自己调用 snakeyaml 包中的类去加载,但是那样太费事了,所以我们期望能够有一个简便的办法来做这件事。
怎么做呢?
我们可以利用 Spring Boot 中对于 profile 多环境的处理方式来加载自定义的 YAML 配置。
大家知道,Spring Boot 中对于多环境的处理方式非常方便,以 yaml 配置为例,我们只需要定义一个名为 application-{profile}.yaml 的配置文件,然后在 application.yaml 中就可以指定这个环境了,利用这个漏洞,就可以非常方便的加载自定义的 yaml 配置了,不过这种方式对自定义的 yaml 配置文件名格式有要求,就是必须是 application-{profile}.yaml 格式的。
我举一个简单例子吧,例如对于数据库的配置,我想单独搞一个配置文件,那么我们可以新建一个 application-data.yaml 的配置文件,内容如下:
spring:
datasource:
password: 123
username: root
url: jdbc:mysql:///vhr
然后在 application.yaml 中就像设置环境一样引入这个配置文件,如下:
spring:
profiles:
active: data
这样就实现了对自定义 yaml 配置文件的加载。
如果有多个自定义的 yaml 配置,那么也可以一起加载,多个环境之间用 , 隔开即可。
just this。
小伙伴们都知道吧嘿嘿。
网站名称:说一个大家都知道的SpringBoot小技巧
地址分享:http://www.mswzjz.cn/qtweb/news46/410396.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能