真实业务场景(不希望配置类注册为Bean 或 不希望声明@ConfigurationProperties)
假设某一个jar包内封装了DataSourceProperties
@Configuration
@ConfigurationProperties(
prefix = "my.datasource"
)
@Data
public class DataSourceProperties {
private List<String> suffix;
private List<DataSourceDetailProperties> db;
}
复制代码
在jar包的Configuration中,某个@Bean的构造过程中引用了这个DataSourceProperties
public JdbcTemplate buildJdbcTemplate(DataSourceProperties dataSourceProperties) {
}
复制代码
在某个业务场景中,同时存在两个DataSourceProperties 会造成一个问题,注入的时候会提示有多个候选的bean 但是没法去修改Jar包中的内容
自己重复写一个DataSourceProperties 不是很优雅
这时候引出了一个需求,DataSourceProperties不希望注册为Bean,但是能够从配置文件读取构建对象
解决方案一
使用org.springframework.boot.context.properties.bind.Binder
从配置文件构建配置对象
@Bean
public JdbcTemplate buildJdbcTemplate(Environment environment) {
B