SpringBoot2.X入门(一):Spring配置文件学习

一、YAML文件的不足

YAML文件的优势可以说一目了然,目前YAML的不足,例如无法通过@PropertySource注解来加载配置。但是,YAML加载属性到内存中保存的时候是有序的,所以当配置文件中的信息需要具备顺序含义时,YAML的配置方式比起properties配置文件更有优势。

二、自定义参数

自定义的参数可以在应用中使用@Value来获取。

@Value注解支持两种表达式配置

  • PlaceHolder方式,格式为 ${...},大括号内为PlaceHolder
  • SpEL表达式(Spring Expression Language), 格式为 #{...},大括号内为SpEL表达式
book.name=SpringCloudInAction
book.author=ZhaiYongchao
@Component
public class Book {

    @Value("${book.name}")
    private String name;
    @Value("${book.author}")
    private String author;

    // 省略getter和setter
}

三、参数引用

在配置文件中可以使用${...}的方式来引用其他参数。

疑问:有没有先后顺序之分?

book.name=SpringCloud
book.author=ZhaiYongchao
book.desc=${book.author}  is writing《${book.name}》

四、随机数

可以使用${random}来生成随机数。比如:秘钥,程序端口等。

# 随机字符串
com.lifeisftc.blog.value=${random.value}
# 随机int
com.lifeisftc.blog.number=${random.int}
# 随机long
com.lifeisftc.blog.bignumber=${random.long}
# 10以内的随机数
com.lifeisftc.blog.test1=${random.int(10)}
# 10-20的随机数
com.lifeisftc.blog.test2=${random.int[10,20]}

五、命令行参数

java -jar xxx.jar --server.port=8888

可以直接以命令行的方式来设置某些属性。

六、多环境配置

属性名:spring.profiles.active

多环境的配置思路

  • application.properties中配置通用内容,并设置spring.profiles.active=dev,以开发环境为默认配置
  • application-{profile}.properties中配置各个环境不同的内容
  • 通过命令行方式去激活不同环境的配置

七、Spring Boot对数据文件的加载顺序(优先级由高到低)

Spring Boot为了能够更合理的重写各属性的值,使用了下面这种较为特别的属性加载顺序:

  1. 命令行中传入的参数;
  2. SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容;
  3. java:comp/env中的JNDI属性;
  4. Java的系统属性,可以通过System.getProperties()获得的内容;
  5. 操作系统的环境变量;
  6. 通过random.*配置的随机属性;
  7. 位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件;
  8. 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件;
  9. 位于当前应用jar包之外application.propertiesYAML配置内容;
  10. 位于当前应用jar包之内application.propertiesYAML配置内容;
  11. @Configuration注解修改的类中,通过@PropertySource注解定义的属性;
  12. 应用默认属性,使用SpringApplication.setDefaultProperties定义的内容;

我们可以感受到这个优先级顺序的用意是Spring Boot想要将多环境配置逐渐转移到由外部操作来控制,而不是改程序文件或者代码。

八、配置文件绑定

1.下面的4种配置方式都是等价的(移除特殊字符,还会将配置均以全小写的方式进行匹配和加载):

推荐使用全小写配合-分隔符的方式来配置,比如:spring.jpa.database-platform=mysql

spring.jpa.databaseplatform=mysql
spring.jpa.database-platform=mysql
spring.jpa.databasePlatform=mysql
spring.JPA.database_platform=mysql

2.List类型

在properties文件中使用[]或者逗号来定位列表类型,[]中的值必须是连续的不然会抛出UnboundConfigurationPropertiesException异常。

// 1.[]方式
spring.my-example.url[0]=http://example.com
spring.my-example.url[1]=http://spring.io
//2.逗号方式
spring.my-example.url=http://example.com,http://spring.io

在YML文件中的配置方式

// 1.第一种方式
spring:
  my-example:
    url:
      - http://example.com
      - http://spring.io
// 2.逗号方式
spring:
  my-example:
    url: http://example.com, http://spring.io

3.Map类型

// 1.properties格式
spring.my-example.foo=bar
spring.my-example.hello=world
// 2.YML格式
spring:
  my-example:
    foo: bar
    hello: world


// 特殊的,如果Map类型的key包含非字母数字和-的字符,需要用[]括起来,比如,代表这是一个整体

spring:
  my-example:
    '[foo.baz]': bar

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值