@PropertySource扩展
@PropertySource(value={"classpath:person.properties"}) //从指定属性文件中读取属性
如上,@PropertySource只能读取.properties文件到application中,但目前spring boot是默认支持application.yml作为默认配置文件的,如何才能读取自定义的.yml文件呢,如下步骤:
-
定义 YamlPropertySourceFactory
public class YamlPropertySourceFactory implements PropertySourceFactory { @Override public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException { YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean(); factory.setResources(resource.getResource()); factory.afterPropertiesSet(); Properties ymlProperties = factory.getObject(); String propertyName = name != null ? name : resource.getResource().getFilename(); return new PropertiesPropertySource(propertyName, ymlProperties); } }
-
配置@PropertySource
@PropertySource(value = "classpath:person.yml",factory = YamlPropertySourceFactory.class)
之后就可以像使用properties一样,使用yml文件了。