Spring Boot 配置文件(application.yml、application-dev.yml、application-test.yml)

 更新时间:2024年03月15日 09:46:25   作者:CodeCharm——CC  
本文主要介绍了Spring Boot 配置文件,主要包含application.yml、application-dev.yml、application-test.yml,具有一定的参考价值,感兴趣的可以了解一下

一、application.yml 基础配置

是 Spring Boot 中用于配置应用程序属性的主要配置文件之一。这个文件通常用于配置应用程序的一般性属性,包括数据库连接、日志级别、端口号等。下面是一些常见的在 application.yml 中配置的示例:

# 服务器端口
server:
  port: 8080

# 数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

# 日志级别
logging:
  level:
    root: INFO
    com.example.mypackage: DEBUG

# 应用程序自定义属性
myapp:
  name: My Spring Boot App
  version: 1.0

上述示例展示了一些常用的配置项,但根据应用程序的需求,你可以在 application.yml 中配置各种属性。Spring Boot 非常灵活,可以根据属性的前缀识别属性,并将其绑定到对应的 Java 对象上,以方便在代码中使用。

需要注意的是,application.yml 文件采用 YAML(YAML Ain’t Markup Language)语法,它使用缩进和冒号来表示层次关系。因此,正确的缩进对于保持文件的结构是很重要的。

二、配置文件在项目中起到的具体作用

在 Spring Boot 中,可以通过属性文件(比如 application.yml 或 application.properties)来配置应用程序的属性。这些属性可以直接映射到 Java 对象中,从而在代码中方便地使用

1、@ConfigurationProperties 注解

提供了一种方便的方式,可以将配置文件中的属性映射到 Java

对象的字段上。这样做的一个常见的方式是使用属性的前缀来进行匹配。以下是一个简单的示例:

# application.yml myapp:   database:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: password 
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component 
@ConfigurationProperties(prefix = "myapp.database") public
class DatabaseProperties {
    private String url;
    private String username;
    private String password;

    // Getters and setters

    // 可以在这里添加其他的业务逻辑 
} 

在这个例子中,DatabaseProperties 类的属性(urlusernamepassword)会与

application.yml 文件中 myapp.database 下的属性相匹配。Spring Boot 会自动将这些属性值注入到

DatabaseProperties 实例中。

然后,你可以在其他组件中注入 DatabaseProperties,并直接使用其中的属性:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service public class DatabaseService {
    private final DatabaseProperties databaseProperties;

    @Autowired
    public DatabaseService(DatabaseProperties databaseProperties) {
        this.databaseProperties = databaseProperties;
    }

    public void connectToDatabase() {
        String url = databaseProperties.getUrl();
        String username = databaseProperties.getUsername();
        String password = databaseProperties.getPassword();

        // 连接到数据库的逻辑...
    } 
} 

通过这种方式,你可以将配置文件中的属性映射到 Java

对象上,并在代码中方便地使用这些属性。这种配置方式可以帮助你集中管理应用程序的配置,并提高代码的可维护性。

2、@Value 注解

使用 @Value 注解可以直接将配置文件中的属性值注入到 Spring Bean 中的字段或方法参数上。

@Value("${property.name}") private String
   propertyName;

3、Environment对象

通过 Environment 对象获取配置属性。

@Autowired private Environment env;
   
public void someMethod() {
   	String propertyValue = env.getProperty("property.name"); 
}

4、@PropertySource注解引入外部属性文件

使用 @PropertySource 注解可以在配置类中引入外部的属性文件。

public class MyConfiguration {
    @Value("${custom.property}")
    private String customProperty;
} 

5、@ConfigurationPropertiesScan 注解(Spring Boot 2.2+)

这个注解允许在指定的包及其子包中扫描 @ConfigurationProperties 注解,无需显式声明

@ConfigurationProperties 的 Bean。

@ConfigurationPropertiesScan("com.example.config") 

这些方式都允许在应用程序中方便地访问配置文件中的属性值,开发者可以根据具体情况选择最适合的方式。

三、Spring Boot 的其他配置文件

在 Spring Boot 中,除了常见的 application.yml 或 application.properties 外,你还可以使用其他自定义的配置文件。Spring Boot 提供了以下几种常见的配置文件:

1、application.properties/application.yml

默认的主配置文件,Spring Boot 应用会自动加载该文件。存放应用程序的主要配置。

2、application-{profile}.properties/application-{profile}.yml:

可以根据不同的环境配置不同的属性文件,{profile} 表示环境名称。
例如,application-dev.properties 用于开发环境,application-prod.properties用于生产环境。

3、bootstrap.properties/bootstrap.yml:

用于 Spring Cloud 应用,是 Spring Cloud Config 服务的默认配置文件。
存放一些启动时需要优先加载的配置,比如连接到 Config Server 的配置。

4、application-{profile}.properties/application-{profile}.yml:

可以根据不同的环境配置不同的属性文件,{profile} 表示环境名称。 例如,application-dev.properties
用于开发环境,application-prod.properties 用于生产环境。

5、application-{label}.properties/application-{label}.yml:

用于 Git 和配置服务器的外部化配置,{label} 表示 Git 的标签。
例如,application-v1.properties 用于版本 1。

这些文件命名规范允许你根据不同的环境、配置标签或者配置文件类型组织和管理你的配置信息。Spring Boot 会根据上述规则自动加载相应的配置文件。

四、多配置文件使用哪个

Spring Boot 在启动时会加载默认的主配置文件,即 application.yml 或 application.properties。如果有不同环境的配置文件,如 application-test.yml 或 application-dev.yml,Spring Boot 会根据当前激活的环境来选择加载对应的配置文件。

1、设置 spring.profiles.active 指定激活环境

你可以通过在 application.yml 或 application.properties 中设置 spring.profiles.active 属性来指定激活的环境。例如:

spring:
  profiles:
    active: dev

上述配置表示激活 dev 环境,因此 Spring Boot 会加载 application-dev.yml 文件中的配置。

如果没有设置 spring.profiles.active 属性,Spring Boot 将默认使用主配置文件的配置。

2、命令行参数指定环境

除了通过属性文件来设置激活的环境外,你还可以通过命令行参数、系统属性、环境变量等方式来指定激活的环境。例如,通过命令行参数启动时指定环境:

java -jar your-application.jar --spring.profiles.active=dev

这样就会加载 application-dev.yml 的配置。

五、Springboot中配置文件的加载顺序

application.yml、application.properties和bootStrap.yml加载顺序

以jar包发布springboot项目时

默认会先使用jar包跟目录下的application.properties来作为项目配置文件。

如果在不同的目录中存在多个配置文件,它的读取顺序是:

1、config/application.properties(项目根目录中config目录下)

2、config/application.yml

3、application.properties(项目根目录下)

4、application.yml

5、resources/config/application.properties(项目resources目录中config目录下)

6、resources/config/application.yml

7、resources/application.properties(项目的resources目录下)

8、resources/application.yml

到此这篇关于Spring Boot 配置文件(application.yml、application-dev.yml、application-test.yml)的文章就介绍到这了,更多相关SpringBoot 配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring MVC拦截器_动力节点Java学院整理

    Spring MVC拦截器_动力节点Java学院整理

    Spring MVC的拦截器,是属于HandlerMapping级别的,可以有多个HandlerMapping ,每个HandlerMapping可以有自己的拦截器,具体内容详情大家通过本文学习吧
    2017-08-08
  • EL表达式简介_动力节点Java学院整理

    EL表达式简介_动力节点Java学院整理

    EL全名为Expression Language,这篇文章主要给大家介绍EL表达式的主要作用及内容简介,感兴趣的朋友一起看看
    2017-07-07
  • Java服务调用失败报Service com.oneinfinite.adflow.api.service.TestService未找到的解决方法

    Java服务调用失败报Service com.oneinfinite.adflow.api.service.T

    在Java开发中,服务调用是常见的操作,尤其是在微服务架构中,然而,服务调用过程中可能会遇到各种问题,下面我们来看看如何解决Service com.oneinfinite.adflow.api.service.TestService with version 0.0.0 not found的问题吧
    2025-03-03
  • java 启动参数 springboot idea详解

    java 启动参数 springboot idea详解

    这篇文章主要介绍了java 启动参数 springboot idea的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Java适配器模式定义与用法示例

    Java适配器模式定义与用法示例

    这篇文章主要介绍了Java适配器模式定义与用法,结合具体实例形式分析了java适配器模式的功能、组成、定义、使用方法及适配程度等,需要的朋友可以参考下
    2017-06-06
  • Java的带GUI界面猜数字游戏的实现示例

    Java的带GUI界面猜数字游戏的实现示例

    这篇文章主要介绍了Java的带GUI界面猜数字游戏的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • java基于双向环形链表解决丢手帕问题的方法示例

    java基于双向环形链表解决丢手帕问题的方法示例

    这篇文章主要介绍了java基于双向环形链表解决丢手帕问题的方法,简单描述了丢手帕问题,并结合实例形式给出了Java基于双向环形链表解决丢手帕问题的步骤与相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • java并发容器CopyOnWriteArrayList实现原理及源码分析

    java并发容器CopyOnWriteArrayList实现原理及源码分析

    这篇文章主要为大家详细介绍了java并发容器CopyOnWriteArrayList实现原理及源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • MyBatis XPathParser解析器使用范例详解

    MyBatis XPathParser解析器使用范例详解

    这篇文章主要介绍了关于MyBatis中解析器XPathParser的实际使用实践,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2022-07-07
  • Protobuf的简要介绍及使用详解

    Protobuf的简要介绍及使用详解

    这篇文章主要介绍了Protobuf的简要介绍及使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10

最新评论