Spring Boot 应用使用 application.yml 和 application.properties 的区别

简介: 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 语法稍稍有些不一样:

相关文章
|
11天前
|
监控 Java 应用服务中间件
spring和springboot的区别
spring和springboot的区别
17 1
|
2月前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
69 1
|
7天前
|
监控 Java Sentinel
Spring Cloud Sentinel:概念与实战应用
【4月更文挑战第28天】在分布式微服务架构中,确保系统的稳定性和可靠性至关重要。Spring Cloud Sentinel 为微服务提供流量控制、熔断降级和系统负载保护,有效预防服务雪崩。本篇博客深入探讨 Spring Cloud Sentinel 的核心概念,并通过实际案例展示其在项目中的应用。
16 0
|
9天前
|
XML Java 数据格式
手写spring第六章-实现应用上下文,完成bean的扩展机制
手写spring第六章-实现应用上下文,完成bean的扩展机制
14 0
|
11天前
|
消息中间件 Java 中间件
第十六章 Spring cloud stream应用
第十六章 Spring cloud stream应用
14 0
|
19天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
【Spring系列】Sping VS Sping Boot区别与联系
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo与Spring Cloud的区别?
总之,Dubbo和Spring Cloud都是分布式系统开发中的重要工具,根据项目需求和技术栈的选择,可以选择适合的框架来构建分布式微服务架构。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
17 0
|
1月前
|
存储 安全 Java
Spring Security应用讲解(Java案列演示)
Spring Security应用讲解(Java案列演示)
|
2月前
|
Prometheus 监控 Cloud Native
Spring Boot 应用可视化监控
Spring Boot 应用可视化监控
20 0
|
2月前
|
Cloud Native Java 开发者
Spring Boot 4.0:构建云原生Java应用的前沿工具
Spring Boot 4.0:构建云原生Java应用的前沿工具