我可以使用@Value批注在ServletContextListener中获取系统属性

时间:2015-04-22 15:42:16

标签: spring spring-mvc

我的Web应用程序中有一个ServletContextListener。以下作品......

PrintWriter xmlOut = new PrintWriter("outputFileName.xml");
pipeline.xmlPrint(doc, xmlOut);

但是@Value注释不能使用....

public class AppServletContextListener 
               implements ServletContextListener, HttpSessionAttributeListener, HttpSessionListener {

      public void contextInitialized(ServletContextEvent arg0) {

            String repManInitScript = System.getProperty("REP_MAN_INIT_SCRIPT");
            System.err.println(repManInitScript ); 
       }
}

有没有办法使用@Value注释来获取系统属性?

由于

1 个答案:

答案 0 :(得分:5)

是的,你可以但你必须从系统属性中获取它:

@Value("#{systemProperties['REP_MAN_INIT_SCRIPT']}")
private String repManInitScript;

我假设您已在系统属性中拥有此属性。

当然@Value注释仅适用于spring bean。如果您尝试直接在ServletContextListener中使用它,则无效。

${REP_MAN_INIT_SCRIPT}无效,因为如果您有任何属性,Spring会在您配置的属性中查找该属性。

因此,如果您希望在初始化时使用它,可以在spring bean中实现InitializingBean并覆盖afterPropertiesSet方法。然后该值将可用。