我的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注释来获取系统属性?
由于
答案 0 :(得分:5)
是的,你可以但你必须从系统属性中获取它:
@Value("#{systemProperties['REP_MAN_INIT_SCRIPT']}")
private String repManInitScript;
我假设您已在系统属性中拥有此属性。
当然@Value
注释仅适用于spring bean。如果您尝试直接在ServletContextListener
中使用它,则无效。
此${REP_MAN_INIT_SCRIPT}
无效,因为如果您有任何属性,Spring会在您配置的属性中查找该属性。
因此,如果您希望在初始化时使用它,可以在spring bean中实现InitializingBean并覆盖afterPropertiesSet
方法。然后该值将可用。