本帖最后由 sunwul 于 2022-3-13 01:11 编辑
你说的这种就是自动扫描自定义的配置文件,然后根据绑定的类生成Bean了. 这种只要实现PropertySourceFactory重写createPropertySource()方法. 扫描并装载指定路径下的配置文件就可以了.- 实现 PropertySourceFactory 重写 createPropertySource() 方法
[Java] 纯文本查看 复制代码 public class YamlAuto implements PropertySourceFactory {
@Override
public PropertySource<?> createPropertySource(String s, EncodedResource encodedResource) throws IOException {
YamlPropertiesFactoryBean factoryBean = new YamlPropertiesFactoryBean();
factoryBean.setResources(encodedResource.getResource()); // 指定资源路径
factoryBean.afterPropertiesSet(); // 调用初始化方法装载配置文件
Properties yml = factoryBean.getObject(); // 本质上还是转为 Properties
s = encodedResource.getResource().getFilename(); // 配置文件名称
return new PropertiesPropertySource(s, yml);
}
}
[Java] 纯文本查看 复制代码 @Component
@ConfigurationProperties(prefix = "demo.test")
// 指定自定义工厂, 要绑定的配置
@PropertySource(factory = YamlAuto.class, value = "classpath:demo.yml")
public class TestConfig {
private String name;
private String age;
private String sex;
private String phone;
// 省略getter/setter
}
[Java] 纯文本查看 复制代码 demo:
test:
name: sunwul
age: 99 |