Great question. The simplest option that comes to mind (if you excuse the expression) is to associate a bean in the controller with your session, which is called when the first request for the session arrives (and for this the controller must be either the session bean itself, or your bean must will use aop:scoped-proxy).
If you can call different controllers at the beginning of the session, you can connect the bean to the interceptor with the communication session and configure the display of URLs for sending requests through the interceptor, ensuring that the bean is initialized at the beginning of the session.
. HttpSessionListener, getBean("my-session-scoped-bean") , sessionCreated(), .