我想在我的项目中使用类型安全配置(HOCON 配置文件),这有助于轻松和有组织的应用程序配置。目前我正在使用普通的 Java 属性文件(application.properties),这在大型项目中很难处理。
我的项目是 Spring MVC(不是 Spring Boot 项目)。有没有办法支持我的 Spring 环境(我被注入到我的服务中)由类型安全配置支持。这不应该破坏我现有的环境使用如@Value
注释@Autowired Environment
等。
我怎样才能以最少的努力和对代码的更改来做到这一点。
这是我目前的解决方案:寻找有没有其他更好的方法
@Configuration
public class PropertyLoader{
private static Logger logger = LoggerFactory.getLogger(PropertyLoader.class);
@Bean
@Autowired
public static PropertySourcesPlaceholderConfigurer properties(Environment env) {
PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
Config conf = ConfigFactory.load();
conf.resolve();
TypesafePropertySource propertySource = new TypesafePropertySource("hoconSource", conf);
ConfigurableEnvironment environment = (StandardEnvironment)env;
MutablePropertySources propertySources = environment.getPropertySources();
propertySources.addLast(propertySource);
pspc.setPropertySources(propertySources);
return pspc;
}
}
class TypesafePropertySource extends PropertySource<Config>{
public TypesafePropertySource(String name, Config source) {
super(name, source);
}
@Override
public Object getProperty(String name) {
return this.getSource().getAnyRef(name);
}
}