我的Web应用程序中有一个ServletContextListener。以下作品...
public class AppServletContextListener
implements ServletContextListener, HttpSessionAttributeListener, HttpSessionListener {
public void contextInitialized(ServletContextEvent arg0) {
String repManInitScript = System.getProperty("REP_MAN_INIT_SCRIPT");
System.err.println(repManInitScript );
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用@Value注释不是...
public class AppServletContextListener
implements ServletContextListener, HttpSessionAttributeListener, HttpSessionListener {
@Value("${REP_MAN_INIT_SCRIPT}")
private String repManInitScript;
public void contextInitialized(ServletContextEvent arg0) {
repManInitScript = System.getProperty("REP_MAN_INIT_SCRIPT");
System.err.println(repManInitScript );
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使用@Value注释来获取系统属性?
谢谢
是的,您可以,但是您必须从系统属性中获取它,如下所示:
@Value("#{systemProperties['REP_MAN_INIT_SCRIPT']}")
private String repManInitScript;
Run Code Online (Sandbox Code Playgroud)
我假设您的系统属性中已经具有此属性。
当然,@Value注释仅适用于spring bean。如果您尝试直接在ServletContextListener其中使用它将不起作用。
这${REP_MAN_INIT_SCRIPT}是行不通的,因为如果有必要,spring会在配置的属性中寻找该属性。
因此,如果您希望在初始化时进行此操作,则可以在spring bean中实现InitializingBean并重写afterPropertiesSet方法。然后该值将可用。
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |