当前位置: 首页 > news >正文

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

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


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

完整代码示例
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

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
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
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

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

关键注释说明
  1. @ConfigurationProperties:必须指定 prefix 属性,对应配置文件的前缀。
  2. 嵌套对象:通过字段名继续扩展配置层级(如 nested.field1)。
  3. 集合类型List 用逗号分隔值,Map 需通过键名直接赋值。
  4. 启用配置:通过 @EnableConfigurationProperties 或在配置类上添加 @Component 自动注册 Bean。
http://www.dtcms.com/a/122591.html

相关文章:

  • PHP 表单处理详解
  • docker安装软件汇总(持续更新)
  • 2022年全国职业院校技能大赛 高职组 “大数据技术与应用” 赛项赛卷(2卷)任务书
  • (三)行为模式:12、访问者模式(Visitor Pattern)(C++示例)
  • 家居实用品:生活中的艺术,家的温馨源泉‌
  • skynet.dispatch 使用详解
  • 微信小程序中的openid的作用
  • 对比 redis keys 命令 ,下次面试说用 scan
  • Python-Django+vue宠物服务管理系统功能说明
  • 如何在powerbi使用自定义SQL
  • 自定义控件封装
  • 【QT】QT编译链接 msql 数据库
  • vue用D3.js实现轮盘抽奖
  • AC 自动机 洛谷P3808 P3796 P5357
  • 深度学习篇---LSTMFFTGCT
  • CSV文件读取文件表头字符串含ZWNBSP(零宽度空白字符)
  • Python第八章02:数据可视化Pyecharts包无法使用
  • 【scikit-learn基础】--『预处理』之 数据缩放
  • telophoto源码查看记录 二
  • jmeter插件安装
  • 蓝桥杯备考
  • 【问题排查】SQLite安装失败
  • 五、Linux的使用和操作(2)
  • clickhouse注入手法总结
  • 13.支持 RESTful
  • 请你说一说测试用例的边界
  • Redis的used_memory_peak_perc和used_memory_dataset_perc超过90%会怎么样
  • zsh: command not found: hdc - 鸿蒙 HarmonyOS Next
  • aws平台练习
  • 【VUE3】Eslint 与 Prettier 的配置