В настоящее время мое приложение загружает файл свойств, который имеет различные свойства, разделенные запятыми, как
property=propertyA,propertyB,propertyC
У меня есть код, который загружает файл свойств и назначает в качестве свойств приложения следующее:
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
private String[] properties;
private PropertySource propertySource;
public WebAppInitializer() {
propertySource = getPropertySource();
String propertyStr = (String) propertySource.getProperty("property");
List<String> list = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().split(propertyStr));
properties = list.toArray(new String[list.size()]);
}
}
// @Override
public void onStartup(ServletContext ctx) throws ServletException {
super.onStartup(ctx);
}
protected WebApplicationContext createRootAppContext() {
Class[] configClasses = this.getRootConfigClasses();
if (!ObjectUtils.isEmpty(configClasses)) {
AnnotationConfigWebApplicationContext rootAppContext = new AnnotationConfigWebApplicationContext();
MyPropertySource.addToEnvironment(rootAppContext.getEnvironment());
rootAppContext.getEnvironment().getPropertySources().addFirst(propertySource);
rootAppContext.getEnvironment().setActiveProfiles(properties);
rootAppContext.register(configClasses);
return rootAppContext;
} else {
return null;
}
}
protected WebApplicationContext createServletAppContext() {
AnnotationConfigWebApplicationContext servletAppContext = new AnnotationConfigWebApplicationContext();
servletAppContext.getEnvironment().setActiveProfiles(properties);
Class[] configClasses = this.getServletConfigClasses();
if (!ObjectUtils.isEmpty(configClasses)) {
servletAppContext.register(configClasses);
}
return servletAppContext;
}
}
Теперь мы переносим эти свойства в Db и хотим загрузить из DB.Сначала я подумал добавить следующий код:
@Autowired
PropertyRepository propertyRepository;
public WebAppInitializer() {
List<String> listDB = propertyRepository.getProperties();
if(listDB.isEmpty()) {
propertySource = getPropertySource();
String propertyStr = (String) propertySource.getProperty("property");
List<String> list = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().split(propertyStr));
properties = list.toArray(new String[list.size()]);
}
}
//Other pieces of code
}
Но PropertyRepository всегда имеет значение null.Я думаю, что Spring еще не инициализировал приложение.Я что-то здесь пропустил?Или есть другой способ, которым я должен следовать?Я должен загрузить свойства на этих этапах, так как у меня есть различные функции, инициализированные на основе этих свойств.