我在spring boot应用程序中使用嵌入式tomcat。我的要求是从数据库中读取所有配置属性以及属性文件。
我设法从db中读取属性,并使用@Configuration bean将属性附加到MutablePropertySources,如下所示:
@Configuration
public class PropertiesConf {
@Autowired
private Environment env;
@Autowired
private ApplicationContext appContext;
@PostConstruct
public void init() {
MutablePropertySources propertySources = ((ConfigurableEnvironment) env).getPropertySources();
ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
DataSource ds = (DataSource) appContext.getBean("confDBBeanName");
JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
list.forEach(entry -> map.put(entry.getKey(), entry.getValue()));
MapPropertySource source = new MapPropertySource("custom", map);
propertySources.addFirst(source);
}
}
问题是此配置已初始化
之后
servlet(例如cxf servlet)是注册的。从cxf读取以下配置。我的应用程序中的路径=/api2。属性文件:
2017-11-10 09:41:41.029信息7880---[ost-startStop-1]o.s.b.w.servlet。ServletRegistrationBean:将servlet:“CXFServlet”映射到[/api2/
]*
如您所见,当我添加配置属性时,为时已晚。在我添加配置之前,会进行一些初始化。
目前,我正在添加以下DependsOn注释到我的所有bean中,这是非常令人讨厌的。。。
@DependsOn("propertiesConf")
但我仍然对servlet等有问题。。
正确的spring方法是什么