SpringBoot 的参数配置示例全解析

 更新时间:2025年12月05日 10:02:14   作者:程序员小假  
Spring Boot的参数配置系统通过application.properties和application.yml文件实现,支持多种外部配置方式,本文介绍SpringBoot 的参数配置示例全解析,感兴趣的朋友跟随小编一起看看吧

当然了解,Spring Boot 的参数配置是其核心特性之一,也是它实现“约定大于配置”理念的关键。它极大地简化了传统 Spring 应用中繁琐的 XML 配置。

一、核心概念:application.properties与application.yml

Spring Boot 默认使用这两种文件进行配置(二者选其一即可,.yml 更常用)。

application.properties (传统键值对格式)

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
logging.level.com.example.demo=debug

application.yml (YAML 格式,层次感更强,推荐使用)

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret
logging:
  level:
    com.example.demo: debug

YAML 注意事项:缩进必须使用空格,不能使用 Tab 键,冒号后面必须有一个空格。

二、配置的加载位置与优先级

Spring Boot 会从以下位置按从高到低的优先级加载 application 配置文件(高优先级的配置会覆盖低优先级的配置):

  1. 当前项目根目录下的 /config 子目录
  2. 当前项目根目录
  3. classpath 下的 /config 包 (即 src/main/resources/config)
  4. classpath 根路径 (即 src/main/resources)

最佳实践:在开发时,将通用配置放在 src/main/resources/application.yml 中。在打包部署时,可以在 JAR 包所在目录创建一个 config 文件夹,里面放一个 application.yml 来覆盖开发环境的配置(如数据库连接),这样就实现了配置与代码分离

三、外部化配置(非常强大)

除了配置文件,Spring Boot 还支持多种外部配置方式,优先级高于 application.yml。这在容器化部署(如 Docker)时尤其有用。

  1. 命令行参数
java -jar yourapp.jar --server.port=8888 --spring.datasource.url=jdbc:mysql://prod-server:3306/proddb
  • 操作系统环境变量
    • Spring Boot 会自动识别形如 SPRING_DATASOURCE_URL 的环境变量(注意大小写和下划线)。
  • Profile-specific 配置(多环境配置)
    • 这是管理不同环境(开发、测试、生产)配置的最佳方式。
    • 在通用的 application.yml 中,通过 spring.profiles.active 属性来激活特定环境的配置。
    • 配置文件命名规则:application-{profile}.yml
  • 例如:
    • application-dev.yml (开发环境)
    • application-test.yml (测试环境)
    • application-prod.yml (生产环境)

application.yml

spring:
  profiles:
    active: dev # 默认激活开发环境

激活方式

  • 在配置文件中设置(如上所示)。
  • 命令行激活:java -jar yourapp.jar --spring.profiles.active=prod
  • JVM 参数:-Dspring.profiles.active=test
  • 环境变量:export SPRING_PROFILES_ACTIVE=prod

四、如何在代码中获取配置值?

@Value 注解 (适用于单个属性)

@Component
public class MyComponent {
    @Value("${server.port}")
    private int serverPort;
    @Value("${app.message: Hello Default}") // 使用冒号指定默认值
    private String message;
    // ... 
}

@ConfigurationProperties 注解 (推荐,用于绑定一组配置)

这是更类型安全、更面向对象的方式。

步骤 1:在 application.yml 中定义配置

app:
  user:
    name: "Alice"
    age: 30
    email: "alice@example.com"
    hobbies:
      - reading
      - hiking

步骤 2:创建一个配置类来绑定这些属性

@Component
@ConfigurationProperties(prefix = "app.user") // 前缀是 app.user
@Data // Lombok 注解,自动生成 getter/setter
// 或者也可以手动写 getter 和 setter
public class UserProperties {
    private String name;
    private Integer age;
    private String email;
    private List<String> hobbies;
}

步骤 3:在需要的地方注入并使用

@Service
public class MyService {
    @Autowired
    private UserProperties userProperties;
    public void doSomething() {
        System.out.println("User name: " + userProperties.getName());
        System.out.println("User hobbies: " + userProperties.getHobbies());
    }
}

别忘了在启动类上添加 @EnableConfigurationProperties 注解(但如果你像上面一样在配置类上使用了 @Component,则不需要)。

五、常用配置示例

# 服务器配置
server:
  port: 8080
  servlet:
    context-path: /api # 应用上下文路径
# 数据源配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  # JPA 配置
  jpa:
    hibernate:
      ddl-auto: update # 生产环境不要用 create-drop 或 update
    show-sql: true
# 日志配置
logging:
  level:
    root: info
    org.springframework.web: debug
    com.example: trace
  file:
    name: logs/myapp.log # 输出到文件
# 自定义配置
myapp:
  feature:
    enabled: true
    api-url: https://api.example.com

总结

Spring Boot 的参数配置系统非常灵活和强大,其核心思想是:

  • 约定大于配置:提供了大量默认配置,开箱即用。
  • 配置外部化:允许你通过文件、命令行、环境变量等多种方式覆盖默认配置,轻松适应不同环境。
  • 类型安全绑定:通过 @ConfigurationProperties 可以轻松地将一组配置映射到 Java Bean 上,是管理自定义配置的首选方式。

到此这篇关于SpringBoot 的参数配置示例全解析的文章就介绍到这了,更多相关SpringBoot 参数配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Windows 配置Java环境变量的方法

    详解Windows 配置Java环境变量的方法

    这篇文章主要介绍了Windows 配置Java环境变量,通过配置JAVA_HOME环境变量,配置Path环境变量的过程解析,给大家详细介绍了java环境变量的配置过程,需要的朋友可以参考下
    2022-04-04
  • 关于Rabbitmq死信队列及延时队列的实现

    关于Rabbitmq死信队列及延时队列的实现

    这篇文章主要介绍了关于Rabbitmq死信队列及延时队列的实现,TTL就是消息或者队列的过期功能,当消息过期就会进到死信队列,死信队列和普通队列没啥区别,然后我们只需要配置一个消费者来消费死信队列里面的消息就可以了,需要的朋友可以参考下
    2023-08-08
  • kafka消费不到数据的排查过程

    kafka消费不到数据的排查过程

    这篇文章主要介绍了kafka消费不到数据的排查过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Spring MVC结合Spring Data JPA实现按条件查询和分页

    Spring MVC结合Spring Data JPA实现按条件查询和分页

    这篇文章主要为大家详细介绍了Spring MVC结合Spring Data JPA实现按条件查询,以及分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • SpringBoot使用@Slf4j注解实现日志输出的示例代码

    SpringBoot使用@Slf4j注解实现日志输出的示例代码

    @Slf4j 是 Lombok 库中的一个注解,它极大地简化了日志记录的代码,通过使用这个注解,Lombok 会自动在你的类中注入一个静态的日志对象,本文给大家介绍了SpringBoot使用@Slf4j注解实现日志输出的方法,需要的朋友可以参考下
    2024-10-10
  • Java接口的回调机制的实现

    Java接口的回调机制的实现

    本文主要介绍了Java中回调机制的实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Java httpcomponents发送get post请求代码实例

    Java httpcomponents发送get post请求代码实例

    这篇文章主要介绍了Java httpcomponents发送get post请求代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java代码格式化工具(PMD,Checkstyle)的学习指南

    Java代码格式化工具(PMD,Checkstyle)的学习指南

    在 Java 开发的旅程中,编写整洁、规范的代码是每个开发者追求的目标,本文将深入探讨 PMD 和 Checkstyle 的功能,使用方法以及它们如何帮助我们让代码焕然一新吧
    2025-05-05
  • 浅谈Java多线程的优点及代码示例

    浅谈Java多线程的优点及代码示例

    这篇文章主要介绍了浅谈Java多线程的优点及代码示例,还是比较不错的,这里分享给大家,需要的朋友可以参考。
    2017-11-11
  • 实例讲解Java的设计模式编程中责任链模式的运用

    实例讲解Java的设计模式编程中责任链模式的运用

    这篇文章主要介绍了Java的设计模式编程中责任链模式的运用,讲解了通过条件判断结构来分配不同对象的责任权限,需要的朋友可以参考下
    2016-02-02

最新评论