必须添加@EnableConfigurationProperties注解并定义含getter/setter的@ConfigurationProperties类,引入spring-boot-configuration-processor依赖生成metadata.json,通过/actuator/env、控制台打印或BindingFailureException验证生效。

要在Spring Boot 2.4版本中正确绑定Starter的配置属性并生成IDE可识别的配置元数据,必须适配Spring Boot 2.4起引入的配置元数据新机制——不再支持spring.factories中的EnableAutoConfiguration注册方式,且@ConfigurationProperties元数据生成路径与旧版不同。
启用配置属性绑定
在autoconfigure模块的主配置类上添加@EnableConfigurationProperties注解,并指定属性类:
@Configuration
@EnableConfigurationProperties(MyStarterProperties.class)
public class MyStarterAutoConfiguration { ... }
这一步必须做,否则application.yml中以my.starter开头的配置项不会被加载到Bean中。
定义配置属性类
使用@ConfigurationProperties(prefix = "my.starter")声明属性类,并确保类有无参构造器和标准getter/setter:
@ConfigurationProperties(prefix = "my.starter")
public class MyStarterProperties {
private String host = "localhost";
private int port = 8080;
// 必须提供 getter/setter
}
【注意:字段不能是final,且setter方法不可省略】Spring Boot 2.4默认禁用宽松绑定(relaxed binding)的反射回退机制,缺少setter会导致属性注入失败且无明确报错。
生成配置元数据(.json文件)
第一步:在pom.xml中添加processor依赖(仅编译期需要):
第二步:执行mvn compile,插件会自动生成target/classes/META-INF/spring-configuration-metadata.json。
第三步:确认该JSON文件实际存在且包含"my.starter.host"、"my.starter.port"等条目——【若IDE未提示补全,说明此文件未被打包进jar或路径错误】。
验证配置是否生效
方法一:启动应用后访问/actuator/env端点,搜索my.starter,查看对应属性是否出现在propertySources中;
方法二:在自动配置类中注入MyStarterProperties并打印其host/port值,运行时观察控制台输出;
方法三:在application.yml中故意写错属性名(如my.starter.hosst),启动时应触发BindingFailureException异常——这是元数据生效的明确信号。