2014-12-03 57 views
0

我想通过Java配置(无需web.xml)在春季更改会话超时。春季初始化中使用属性值

它看起来很简单,如果你不介意硬编码的超时,但这不是期望的。有没有办法在初始化过程中使用@Value注解?

E.g.

@PropertySource("classpath:/com/example/demo.properties") 
    public class Initialiser implements WebApplicationInitializer { 

    /** Session timeout in seconds. */ 
    @Value(value = "${session-timeout}") 
    private int sessionTimeout; 

    @Override 
    public void onStartup(final ServletContext container) { 
     container.addListener(new SessionListener(sessionTimeout)); 
    } 
} 

运行时的字段为0,因为看起来您无法在startUp期间插入值。反正有这个吗?

感谢您的任何帮助。

+0

我把它在系统属性和做@Value(值=“#{systemProperties [‘会话超时’]}”) – MarianP 2014-12-03 15:02:13

回答

0

你可以试试这个方法:

@PropertySource("classpath:/com/example/demo.properties") 
public class Initialiser implements WebApplicationInitializer { 

    @Resource 
    private Environment env; 

    @Override 
    public void onStartup(final ServletContext container) { 
     container.addListener(new SessionListener(env.getRequiredProperty("session-timeout"))); 
    } 
} 
+0

不幸的是这给了我一个“无法启动组件”错误。 – wybourn 2014-12-03 14:58:09

+0

什么是根错误?你可以发布堆栈跟踪吗? – wesker317 2014-12-03 15:04:56