spring读取java启动参数_Java后端精选技术:SpringBoot配置读取

在早前的博客中曾经写过 Spring 程序通过 Bean 映射实现配置信息的读取。 在SpringBoot 框架中读取配置的方式变得非常多样,这导致读者在搜寻资料时反而容易迷糊。

到底,SpringBoot 是按什么顺序加载配置?

相应的,我们该选择什么样的方式去读取?

一、配置样例

先看一个例子:

6bae6874af3b8b567eb33edceebb6897.png

代码中,@Component 将 BuildConfig 注册为 Bean , 接下来使用 @Value 注解,将 配置中的 buildinfo.version键映射到了 version 字段上。

我们都知道,通过 application.properties 可以方便的配置一些属性。 属性的值是支持变量替换的,如下:

4a4a0442afbfb14eb342c310910fb119.png

这点,是由 SpringBoot 自动生成的 PropertyPlaceholderConfigurer 对象实现的。

除了 上面所说 application.properties 之外,还有什么途径? 下面介绍如何注入配置

二、如何注入配置

1. 缺省配置文件

类路径中 application.properties(yml) 是默认的配置文件。 此外如果启动应用时,当前目录中存在同名的配置文件,则以此优先。

在此规则之下,SpringBoot 还能识别不同 profile下的配置,这将在后面篇幅中介绍。

2. 使用注解

@PropertySource

可指定属性配置文件的位置, 样例代码:

270a38d86e8745a647b7db2f305d1c89.png

@TestPropertySource

与 @PropertySource 类似,该注解用于指定测试环境中的属性文件,其优先级高于 @PropertySource。

3. 启动参数

以下的命令以指定参数启动 SpringBoot 应用

26b0221b4d742c04fc9a78f9f58cf2ae.png

server.port 值将被注入为环境属性值。

而以下的命令还可以指定 配置文件的位置

091a2a8aa5d9e383b8452f9cbd79fcf7.png

这个spring.config.location就是指的配置文件位置, 默认情况下,SpringBoot 会从下面几路径找到配置文件:

7741587786a7e5254be0717dc4fe1830.png

还有..

SpringBoot 注入配置的方式其实非常多,完整顺序如下表:

4962a99f69f0b0a1c0d4a68d97827db8.png

三、如何读取配置

@Value 注解

如以下的实现:

2ab790384f602984ddd6ec0a9e6feeb8.png

除了类型自动转换之外,通过:false后缀可以指定默认值。

Environment 接口

Environment 是一个类似 Properties 的接口,用来获取属性非常方便。

21d44e2aadc63c4f585cfafb70fba23f.png

@ConfigurationProperties 注解

该注解一般用作前缀匹配,下面的代码摘自Mongodb

1693bd608377eacd6b15492b389369da.png

相应的 Mongodb 配置信息如:

69085576ef51126bdf7f87ad336aaf96.png

四、不同环境中的配置

Spring 提供了 Profile 机制用于管理不同环境的配置。

配置内容可以是 Java Config(对应@Component或@Configuration),也可以是配置文件。 如:

b618d515d28bdf2e81a3a30b8b951666.png

通过@Profile注解可将代码配置关联到某个配置环境

在具体应用中,Profile的用途通常有二:

1. 区别开发、测试、发布环境

对于dev、prod、test分别做不同的配置

a022192266bccf037143cbe7fab6c94a.png

可以在 application.properties 指定启用的环境:

e5d763eb0647efef1a4dac0372dbdbe4.png

也可以通过命令行指定:

06cec1a0d419101a35dbdc64f3943485.png

2. 声明多配置文件

当内容过多时,可以将配置信息进行拆分,如下:

application-mongodb.properties

9da0b07fb44591ca2f3e1cffc7d396de.png

application-mail.properties

a5d3016ce3097e38e06a2d184547e820.png

在主配置文件指定包含关系:

application.properties

c6e422111c8d081a28181d314b04f14f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值