springboot 加载自定义yml文件(@PropertySource)
默认不能加载yml文件,需要自定义实现PropertySourceFactory接口的类进行加载
*******************
相关类与接口
@PropertySource
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(PropertySources.class)
public @interface PropertySource {
String[] value(); //加载文件位置
String name() default "";
boolean ignoreResourceNotFound() default false;
String encoding() default "";
Class<? extends PropertySourceFactory> factory() default PropertySourceFactory.class;
//自定义factory,默认不能加载yml文件,可自定义factory
}
PropertySourceFactory
public interface PropertySourceFactory {
PropertySource<?> createPropertySource(@Nullable String var1, EncodedResource var2) throws IOException;
}
DefaultPropertySourceFactory
public class DefaultPropertySourceFactory implements PropertySourceFactory {
public DefaultPropertySourceFactory() {
}
public PropertySource<?> createPropertySource(@Nullable String name, EncodedResource resource) throws IOException {
return name != null ? new ResourcePropertySource(name, resource) : new ResourcePropertySource(resource);
}
}
ResourcePropertySource
public class ResourcePropertySource extends PropertiesPropertySource {