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.