Search in sources :

Example 1 with InMemorySessionRepository

use of cn.taketoday.web.session.InMemorySessionRepository in project today-framework by TAKETODAY.

the class WebApplicationContextUtils method registerWebApplicationScopes.

/**
 * Register web-specific scopes ("request", "session", "globalSession", "application")
 * with the given BeanFactory, as used by the WebServletApplicationContext.
 *
 * @param beanFactory the BeanFactory to configure
 * @param sc the ServletContext that we're running within
 */
public static void registerWebApplicationScopes(ConfigurableBeanFactory beanFactory, @Nullable ServletContext sc) {
    SessionManager sessionManager = BeanFactoryUtils.find(beanFactory, SessionManager.BEAN_NAME, SessionManager.class);
    if (sessionManager == null) {
        sessionManager = new DefaultSessionManager(new InMemorySessionRepository(new SessionEventDispatcher(), new SecureRandomSessionIdGenerator()), null);
    }
    beanFactory.registerScope(WebApplicationContext.SCOPE_REQUEST, new RequestScope());
    beanFactory.registerScope(WebApplicationContext.SCOPE_SESSION, new SessionScope(sessionManager));
    if (sc != null) {
        ServletContextScope appScope = new ServletContextScope(sc);
        beanFactory.registerScope(WebApplicationContext.SCOPE_APPLICATION, appScope);
        // Register as ServletContext attribute, for ContextCleanupListener to detect it.
        sc.setAttribute(ServletContextScope.class.getName(), appScope);
    }
    beanFactory.registerDependency(HttpSession.class, new SessionObjectSupplier());
    beanFactory.registerDependency(ServletRequest.class, new RequestObjectSupplier());
    beanFactory.registerDependency(ServletResponse.class, new ResponseObjectSupplier());
    beanFactory.registerDependency(ServletContext.class, sc);
}
Also used : SessionEventDispatcher(cn.taketoday.web.session.SessionEventDispatcher) SecureRandomSessionIdGenerator(cn.taketoday.web.session.SecureRandomSessionIdGenerator) SessionManager(cn.taketoday.web.session.SessionManager) DefaultSessionManager(cn.taketoday.web.session.DefaultSessionManager) DefaultSessionManager(cn.taketoday.web.session.DefaultSessionManager) InMemorySessionRepository(cn.taketoday.web.session.InMemorySessionRepository)

Aggregations

DefaultSessionManager (cn.taketoday.web.session.DefaultSessionManager)1 InMemorySessionRepository (cn.taketoday.web.session.InMemorySessionRepository)1 SecureRandomSessionIdGenerator (cn.taketoday.web.session.SecureRandomSessionIdGenerator)1 SessionEventDispatcher (cn.taketoday.web.session.SessionEventDispatcher)1 SessionManager (cn.taketoday.web.session.SessionManager)1