繁体   English   中英

Spring Web应用程序上下文

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM