用 @configurationproperties 将同一前缀的配置绑定到 java 类型。以导出任务为例,把批大小和等待时间放在 export 下,再注入同一个配置对象。

在 YAML 中定义前缀和单位
将配置放进 application.yml。Duration 值显式带单位。
export: batch-size: 50 timeout: 3s
应用可以通过命令行等外部配置源覆盖这些值。
注册配置类型并注入使用者
以下两个类型可放在同一个可扫描包中。
import java.time.Duration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@ConfigurationProperties("export")
record ExportProperties(int batchSize, Duration timeout) {}
@Configuration
@EnableConfigurationProperties(ExportProperties.class)
class ExportConfiguration {}

batch-size 绑定到 batchSize,3s 会转为 Duration。
启动时检查实际绑定值
把下面组件放在同一包中。命令行加入 --export.batch-size=100 后再启动。
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
class ExportCheck {
@Bean
ApplicationRunner inspectExport(ExportProperties properties) {
return args -> System.out.printf("%d | %d ms%n",
properties.batchSize(), properties.timeout().toMillis());
}
}
按示例配置应显示 50 | 3000 ms。传入覆盖参数后应显示 100 | 3000 ms。











