Spring|Spring Boot 应用使用 application.yml 和 application.properties 的区别
Spring 3.1 引入了新的 @PropertySource 注解作为向环境添加属性源的便捷机制。
我们可以将此注解与 @Configuration 注解结合使用:
@Configuration
@PropertySource("classpath:foo.properties")
public class PropertiesWithJavaConfig {
//...
}
注册新属性文件的另一种非常有用的方法是使用占位符,它允许我们在运行时动态选择正确的文件:
@PropertySource({
"classpath:persistence-${envTarget:mysql}.properties"
})
Spring Boot 中的一个常见做法是使用外部配置来定义我们的属性。 这允许我们在不同的环境中使用相同的应用程序代码。
我们可以使用属性文件、YAML 文件、环境变量和命令行参数。
Properties Configuration 默认情况下,Spring Boot 可以访问 application.properties 文件中设置的配置,该文件使用键值格式:
spring.datasource.url=jdbc:h2:dev
spring.datasource.username=SA
spring.datasource.password=password
这里每一行都是一个单独的配置,所以我们需要通过为我们的键使用相同的前缀来表达分层数据。 在这个例子中,每个键都属于 spring.datasource。
在我们的值中,我们可以使用带有 ${} 语法的占位符来引用其他键、系统属性或环境变量的内容:
app.name=MyApp
app.description=${app.name} is a Spring Boot application
List Structure 如果我们有不同值的同一种属性,我们可以用数组索引来表示列表结构:
application.servers[0].ip=127.0.0.1
application.servers[0].path=/path1
application.servers[1].ip=127.0.0.2
application.servers[1].path=/path2
application.servers[2].ip=127.0.0.3
application.servers[2].path=/path3
YAML Configuration 除了 Java 属性文件,我们还可以在 Spring Boot 应用程序中使用基于 YAML 的配置文件。 YAML 是一种用于指定分层配置数据的便捷格式。
现在让我们从属性文件中获取相同的示例并将其转换为 YAML:
spring:
datasource:
password: password
url: jdbc:h2:dev
username: SA
如果表达 list 结构,YAML 格式也更加简洁:
application:
servers:
-ip: '127.0.0.1'
path: '/path1'
-ip: '127.0.0.2'
path: '/path2'
-ip: '127.0.0.3'
path: '/path3'
SAP CAP 基于 SpringBoot 版本的 sample 应用,使用的就是 Application.yml 文件,比如 mock user 的定义:
文章图片
和帮助文档里的 yml 语法稍稍有些不一样:
【Spring|Spring Boot 应用使用 application.yml 和 application.properties 的区别】
文章图片
推荐阅读
- 如何在|如何在 SAP BTP Java 应用里使用 SAP HANA 数据库
- 如何将|如何将 SAP Business Application Studio 里开发的 Java 应用部署到 SAP BTP 上
- 给|给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
- 一个实际的例子学习|一个实际的例子学习 SAP BTP Java 应用的 @Before 注解使用方式
- 图文详解 Spring AOP,看完必懂。。
- Spring|Spring boot测试找不到SpringRunner.class的问题
- 解决Spring|解决Spring Security的权限配置不生效问题
- 使用SpringSecurity设置角色和权限的注意点
- #|计算机网络(应用层 - 万维网 WWW、HTTP 协议以及 HTML 语言)
- #|i.MX6ULL终结者QT应用开发Qt系统移植