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 an abstract method getCurrentSessionBean()
- create a flag
initialized on 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
@PostConstruct and spare the initizlied flag
Another option is to:
- define a
HttpSessionListener in 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
@PostConstruct at that point
The first option is "more spring", the second is easier and faster to implement.