Spring Boot 自定义配置类(包含字符串、数字、布尔、小数、集合、映射、嵌套对象)实现步骤及示例

Spring Boot 自定义配置类实现步骤及示例


步骤说明
  1. 创建配置类 :定义一个 POJO 类,使用 @ConfigurationProperties 注解指定配置前缀。
  2. 启用配置绑定 :在启动类或配置类上添加 @EnableConfigurationProperties 注解。
  3. 配置文件写法 :在 application.propertiesapplication.yml 中按前缀配置参数。
  4. 注入配置类 :通过 @Autowired 在需要的组件中使用配置参数。

完整代码示例
java 复制代码
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

@Component
@ConfigurationProperties(prefix = "app.config") // 指定配置前缀
@Data // Lombok 自动生成 getter/setter
public class AppConfig {

    // 基本类型
    private String name;          // 字符串类型
    private int port;             // 整型
    private boolean enabled;      // 布尔型
    private double version;       // 双精度浮点型

    // 集合类型
    private List<String> roles;   // 列表
    private Map<String, String> metadata; // 键值对

    // 嵌套对象
    private NestedConfig nested;

    // 嵌套类(需在父类中定义或单独定义)
    @Data
    public static class NestedConfig {
        private String field1;
        private Integer field2;
    }
}

启用配置绑定

在 Spring Boot 启动类或配置类上添加 @EnableConfigurationProperties

java 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties(AppConfig.class) // 启用配置类
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

配置文件示例
application.properties
properties 复制代码
app.config.name=MyApp
app.config.port=8080
app.config.enabled=true
app.config.version=1.0.0
app.config.roles=ROLE_USER,ROLE_ADMIN
app.config.metadata.key1=value1
app.config.metadata.key2=value2
app.config.nested.field1=nestValue
app.config.nested.field2=42
application.yml
yaml 复制代码
app:
  config:
    name: MyApp
    port: 8080
    enabled: true
    version: 1.0.0
    roles:
      - ROLE_USER
      - ROLE_ADMIN
    metadata:
      key1: value1
      key2: value2
    nested:
      field1: nestValue
      field2: 42

字段类型总结表格
字段类型 字段名 配置示例 说明
String name app.config.name=MyApp 基础字符串配置
int port app.config.port=8080 整数类型配置
boolean enabled app.config.enabled=true 布尔值开关配置
double version app.config.version=1.0.0 浮点数配置
List roles app.config.roles=ROLE_USER,ROLE_ADMIN 列表集合配置(逗号分隔)
Map metadata app.config.metadata.key1=value1 键值对配置(YAML 需层级结构)
嵌套对象 nested app.config.nested.field1=nestValue 嵌套对象需通过子属性层级配置

关键注释说明
  1. @ConfigurationProperties :必须指定 prefix 属性,对应配置文件的前缀。
  2. 嵌套对象 :通过字段名继续扩展配置层级(如 nested.field1)。
  3. 集合类型List 用逗号分隔值,Map 需通过键名直接赋值。
  4. 启用配置 :通过 @EnableConfigurationProperties 或在配置类上添加 @Component 自动注册 Bean。
相关推荐
叫我阿柒啊9 小时前
从Java全栈到前端框架:一次真实面试的深度复盘
java·spring boot·typescript·vue·database·testing·microservices
点云SLAM9 小时前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理
sniper_fandc9 小时前
IDEA修改系统缓存路径,防止C盘爆满
java·ide·intellij-idea
aristo_boyunv9 小时前
拦截器和过滤器(理论+实操)
java·数据仓库·hadoop·servlet
半夏陌离10 小时前
SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
java·前端·数据库
CUIYD_198910 小时前
Eclipse 常用搜索功能汇总
java·ide·eclipse
野犬寒鸦11 小时前
力扣hot100:相交链表与反转链表详细思路讲解(160,206)
java·数据结构·后端·算法·leetcode
绿箭柠檬茶11 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu
ytadpole11 小时前
揭秘设计模式:工厂模式的五级进化之路
java·设计模式
计算机毕业设计木哥11 小时前
计算机毕设选题:基于Python+Django的B站数据分析系统的设计与实现【源码+文档+调试】
java·开发语言·后端·python·spark·django·课程设计