今天遇到一个很诡异的问题
我想把mysql_durid.yml中的配置信息注入到DruidDataSource中
发现根本不起作用
调试源代码发现
mysql_druid.yml中的 spring.database.druid 都没了。
里面的key不是spring.database.druid.url 等等 二直接是url password之类的
搞了半天 是我用错了。
在网上搜了一下别人怎么用的
大概是这样吧。
如果想解决这一问题
可以重写 PropertySource的 factory
具体代码如下
/**
* @author coffee
* @create 2021-01-18 21:55
**/
public class DruidPropertySourceFactory implements PropertySourceFactory {
@Override
public PropertySource<?> createPropertySource(String sourceName, EncodedResource resource) throws IOException {
Properties propertiesFromYaml = loadYaml(resource);
if (StringUtils.isBlank(sourceName)) {
sourceName = resource.getResource().getFilename();
}
return new PropertiesPropertySource(sourceName, propertiesFromYaml);
}
private Properties loadYaml(EncodedResource resource) throws FileNotFoundException {
try {
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(resource.getResource());
factory.afterPropertiesSet();
return factory.getObject();
} catch (IllegalStateException e) {
Throwable cause = e.getCause();
if (cause instanceof FileNotFoundException) {
throw (FileNotFoundException) e.getCause();
}
throw e;
}
}
}
另外一种实现方式
参考这里
https://cloud.tencent.com/developer/article/1481440