I need to initialize every new http session with some values. How do I do that?
I tried to create a session-scoped component and initializing session in 开发者_StackOverflow社区@PostConstruct, but session-scoped beans are not eagerly created until I request access them.
If you are absolutely certain that your want eager initialization, you can do the following:
- define an interceptor for all beans
defina a
<lookup-method>for that interceptor:<lookup-method name="getCurrentSessionBean" bean="yourSessionBeanToInitialize"/>define the interceptor
abstract, with anabstractmethodgetCurrentSessionBean()- create a flag
initializedon the bean - on each interception, call the lookup method and it will return an instance of the bean from the current session. If it is not initialized (the flag), initialize it
- you can also use
@PostConstructand spare theinitizliedflag
Another option is to:
- define a
HttpSessionListenerin web.xml (or with annotations if using servlet 3.0) - use
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)to obtain the context - call
getBean(..)to get an instance of the session-scoped bean - it will be initialized with
@PostConstructat that point
The first option is "more spring", the second is easier and faster to implement.
加载中,请稍侯......
精彩评论