2014-12-03 53 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