[英]Spring web Application Context
在我的Web应用程序中,我正在创建一个CustomWebApplicationInitializer,该类是AbstractAnnotationConfigDispatcherServletInitializer的扩展。 我需要为该应用程序添加另一个属性源。 我在下面的onStartup方法中通过在ServletContext中设置InitParameter来执行此操作。
public class MvcWebApplicationInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
private static final String[] SERVLET_MAPPINGS = new String[] {"/"};
private static final String SESSION_COOKIE_PATH = "/";
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {AppConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {WebConfig.class};
}
@Override
protected String[] getServletMappings() {
return SERVLET_MAPPINGS;
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.setInitParameter("contextInitializerClasses", "com.test.myproject.MyTestPropertySourceInitializer");
}
}
MyTestPropertySourceInitializer实现ApplicationContextInitializer并检查某个属性的值是否设置为true。
public void initialize(ConfigurableApplicationContext applicationContext) {
ConfigurableEnvironment env = applicationContext.getEnvironment();
Boolean testPropEnabled = (Boolean) env.getProperty("testProperty.enabled", Boolean.class);
我已将该属性值设置为true。 但是在日志中,该值为false,并且无法按预期进行处理。 因此,我认为在调用initialize方法时,属性文件尚未加载到applicationContext中。 请告知我如何使它工作。 提前致谢。
尝试,通过强制加载属性文件
public void initialize(ConfigurableApplicationContext applicationContext) {
ConfigurableEnvironment env = applicationContext.getEnvironment();
env.getPropertySources().addFirst(new ResourcePropertySource("classpath:application.properties"))
Boolean testPropEnabled = (Boolean) env.getProperty("testProperty.enabled", Boolean.class);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.