我想我想出了一种比手动添加
PropertySource到属性源更惯用的方法。创建一个
PropertySourceFactory并引用
@PropertySource
首先,我们
TypesafeConfigPropertySource与您拥有的几乎相同:
public class TypesafeConfigPropertySource extends PropertySource<Config> { public TypesafeConfigPropertySource(String name, Config source) { super(name, source); } @Override public Object getProperty(String path) { if (source.hasPath(path)) { return source.getAnyRef(path); } return null; }}
接下来,我们创建一个PropertySource 工厂 ,该 工厂 返回该属性源
public class TypesafePropertySourceFactory implements PropertySourceFactory { @Override public PropertySource<?> createPropertySource(String name, EnpredResource resource) throws IOException { Config config = ConfigFactory.load(resource.getResource().getFilename()).resolve(); String safeName = name == null ? "typeSafe" : name; return new TypesafeConfigPropertySource(safeName, config); }}
最后,在我们的配置文件中,我们可以像其他任何属性一样引用属性源,
PropertySource而不必自己添加PropertySource:
@Configuration@PropertySource(factory=TypesafePropertySourceFactory.class, value="someconfig.conf")public class PropertyLoader { // Nothing needed here}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)