在我的maven多模块 SpringBoot 应用程序中,我有一个模块,它有一个配置类,它加载我自己添加到PropertySourcesPlaceholderConfigurer
bean的yml属性:
@Configuration
public class PropertiesConfig {
public static final String ERROR_FILE_NAME = "errorMessages.yml";
@Bean
public PropertySourcesPlaceholderConfigurer properties() {
final PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
propertySourcesPlaceholderConfigurer.setPropertiesArray(errorPropertiesFromYamlFile()); //set the properties here
return propertySourcesPlaceholderConfigurer;
}
@Bean
public YamlPropertiesFactoryBean errorPropertiesFromYamlFile() {
final YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource(ERROR_FILE_NAME));
return yaml;
}
}
这是一个名为 web-config-module 的子模块。我有一个主要的可运行的 web-app-module ,它将 web-config-module 作为依赖项并导入每个与Spring相关的bean,组件等:
@SpringBootApplication
@Import(WebConfigApp.class)
public class WebApp extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(ErsApplication.class, args);
}
}
在这个主 web-app-module 中我还有一个配置java,它加载了新的yml属性:
@Configuration
public class WebAppPropertiesConfig extends PropertiesConfig {
private PropertySourcesPlaceholderConfigurer properties;
public SchedulerPropertiesConfig(PropertySourcesPlaceholderConfigurer properties) {
this.properties = properties;
}
@Bean
public YamlPropertiesFactoryBean otherPropertiesFromYamlFile() { //how to add this to properties??
final YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("otherproperties.yml"));
return yaml;
}
}
如您所见,它从前一个配置类扩展,因此它具有所有方法,如PropertySourcesPlaceholderConfigurer properties()
方法,但子类中的此方法不是 @Bean < / em>再见。
我想将这个新加载的otherProperties.yml放到已创建的PropertySourcesPlaceholderConfigurer properties
中。但是没有类似 properties.addProperty 的方法。我看到这是背景中的数组,所以我无法添加新值。
我能做的是获取所有属性,将它们保存在一个新的数组中,该数组中还有一个地方,并将新加载的otherProperties添加到这个新数组中,然后再次设置PropertySourcesPlaceholderConfigurer
中的属性,但是没有类似getAllProperties()
我该如何解决这个问题?