SpringBoot2.x基础篇:配置文件中占位符的使用
2020/3/23 17:01:19
本文主要是介绍SpringBoot2.x基础篇:配置文件中占位符的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
知识改变命运,撸码使我快乐,2020继续游走在开源界
点赞再看,养成习惯
给我来个Star吧,点击了解下基于SpringBoot的组件化接口服务落地解决方案
概念
占位符
是一种灵活的配置方式,可以让我们很灵活的使用配置参数,@Value
注解的配置也是占位符的一种体现方式,这种方式可以从Environment
内获取对应的配置值
。
推荐阅读
配置方式
在application.yml/properties
配置文件内可以直接使用占位符
来进行配置的相互引用,如下所示:
system: name: ${spring.application.name} spring: application: name: project-sample 复制代码
在上面的配置中,name
配置直接引用了spring.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
注释掉,当我们使用${spring.application.name}
占位符时其实并未引用到有效的值,通过${xxx:defaultValue}
的形式可以配置默认值,当占位符所引用的配置为NULL
时,将会使用默认值(默认值的类型要对配置匹配)。
也可以通过@Value("${system.name:default}")
这种方式配置默认值,不建议使用这种方式,默认值有变动时,我们还要一个一个修改,太麻烦了,不要给自己找事干...
当然对于配置的注入还是推荐使用
@ConfigurationProperties
,完全遵循OOP
设计方式,在应用程序启动时进行赋值,就算是引用的配置为NULL
没有默认值,也不会出现启动异常的问题。
“短”命令行参数
如果你对命令行参数不熟悉,可以访问 SpringBoot2.x基础篇:灵活的使用外部化配置信息 学习。
在实际部署应用程序时,有很多的配置是动态的,命令行
参数是一个不错的方式,不过SpringBoot
所提供的配置参数名称都比较长,对此我们完全可以利用占位符
配置方式实现自定义。
占位符
是从Environment
内读取对应的配置值,而命令行参数
在应用程序启动时会被一并加入到Environment
中,因此也就实现了占位符
动态配置,其实这个“短”的含义,是你定义的新的配置名称比较短而已。
假设我们的端口号需要动态指定,配置文件中可以通过如下的方式配置:
server: port: ${port:8080} 复制代码
port
是我们定义的“短”占位符
,在应用程序启动时并未指定则使用默认值8080
。
java -jar project-sample.jar --port=9090 复制代码
通过--port=9090
命令行参数,应用程序启动时端口号就变为了9090
。
这篇关于SpringBoot2.x基础篇:配置文件中占位符的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用