SpringBoot2.x基础篇:配置文件中占位符的使用

占位符是一种灵活的配置方式,可以让我们很灵活的使用配置参数,@Value注解的配置也是占位符的一种体现方式,这种方式可以从Environment内获取对应的配置值。
推荐阅读

SpringBoot2.x 教程汇总

配置方式
在application.yml/properties配置文件内可以直接使用占位符来进行配置的相互引用,如下所示:
system:
name: s p r i n g . a p p l i c a t i o n . n a m e s p r i n g : a p p l i c a t i o n : n a m e : p r o j e c t − s a m p l e 复 制 代 码 在 上 面 的 配 置 中 , n a m e 配 置 直 接 引 用 了 s p r i n g . a p p l i c a t i o n . n a m e 的 配 置 值 , 这 样 我 们 在 系 统 中 通 过 @ V a l u e ( " {spring.application.name} spring: application: name: project-sample 复制代码在上面的配置中,name配置直接引用了spring.application.name的配置值,这样我们在系统中通过@Value(" spring.application.namespring:application:name:projectsamplenamespring.application.name@Value("{name}")或者通过@ConfigurationProperties方式使用时,得到的值都为project-sample。
// @Value方式
@Value("${system.name}")
private String name;

// @ConfigurationProperties方式
@Configuration
@ConfigurationProperties(prefix = “system”)
static class LoadConfig {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
复制代码
这样方式极大地减少了相同的配置出现,让我们在配置文件中也可以实现类似于常量的定义。

使用默认值
当我们使用@Value注解来注入配置参数时,如果所引入的配置为NULL,启动项目时会抛出异常,项目无法正常启动,所以我们有必要添加一个默认值,如下所示:
system:
name: ${spring.application.name:default}
#spring:

application:

name: project-sample

复制代码在上面配置中把spring.application.name注释掉,当我们使用 s p r i n g . a p p l i c a t i o n . n a m e 占 位 符 时 其 实 并 未 引 用 到 有 效 的 值 , 通 过 {spring.application.name}占位符时其实并未引用到有效的值,通过 spring.application.name{xxx:defaultValue}的形式可以配置默认值,当占位符所引用的配置为NULL时,将会使用默认值(默认值的类型要对配置匹配)。
也可以通过@Value("${system.name:default}")这种方式配置默认值,不建议使用这种方式,默认值有变动时,我们还要一个一个修改,太麻烦了,不要给自己找事干…
https://blog.csdn.net/A669MM/article/details/105055940
https://blog.csdn.net/A669MM/article/details/105055923
https://blog.csdn.net/A669MM/article/details/105055894
https://blog.csdn.net/A669MM/article/details/105055876
https://blog.csdn.net/srhgsr/article/details/105056472
https://blog.csdn.net/srhgsr/article/details/105056463
https://blog.csdn.net/srhgsr/article/details/105056556
https://blog.csdn.net/srhgsr/article/details/105056527
https://blog.csdn.net/srhgsr/article/details/105056509
https://blog.csdn.net/srhgsr/article/details/105056496
当然对于配置的注入还是推荐使用@ConfigurationProperties,完全遵循OOP设计方式,在应用程序启动时进行赋值,就算是引用的配置为NULL没有默认值,也不会出现启动异常的问题。

“短”命令行参数
如果你对命令行参数不熟悉,可以访问 SpringBoot2.x基础篇:灵活的使用外部化配置信息 学习。
在实际部署应用程序时,有很多的配置是动态的,命令行参数是一个不错的方式,不过SpringBoot所提供的配置参数名称都比较长,对此我们完全可以利用占位符配置方式实现自定义。
占位符是从Environment内读取对应的配置值,而命令行参数在应用程序启动时会被一并加入到Environment中,因此也就实现了占位符动态配置,其实这个“短”的含义,是你定义的新的配置名称比较短而已。
假设我们的端口号需要动态指定,配置文件中可以通过如下的方式配置:
server:
port: ${port:8080}
复制代码port是我们定义的“短”占位符,在应用程序启动时并未指定则使用默认值8080。
java -jar project-sample.jar --port=9090
复制代码通过–port=9090命令行参数,应用程序启动时端口号就变为了9090。

你可能感兴趣的:(架构,后端,前端)