列出SpringMVC创建的请求和会话范围的bean

时间:2015-02-11 14:31:30

标签: java spring spring-mvc

如果网络上已有这些列表,请将其链接。我无法使用谷歌搜索任何这样的东西。

请求范围的bean:

  • javax.servlet.http.HttpServletRequest

会话范围的bean:

  • javax.servlet.http.HttpSession

3 个答案:

答案 0 :(得分:1)

在创建对象后,自动装配发生一次,在推理自动装配和不同范围时,这是要记住的主要事项。

关于你的问题,实际上在短寿命豆类中注入更长的活豆时没有问题。唯一重要的是你意识到它并且它适合你的语义。

其他方面有点棘手。因此,在较长寿的豆子里面注入较短寿命的豆子。这样做的正确方法是依靠代理。如果您在会话范围的bean中注入请求范围的bean,并且代理请求范围的bean,那么代理只会创建一次,但会在每个请求上创建一个请求bean。

它简化了文档中描述的内容,并在http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes-other-injection

中提供

答案 1 :(得分:1)

嗯,这真的取决于你告诉Spring要创建的内容,但你会在默认设置中看到这一点。

REQUEST:

    for(String key : Collections.list(request.getAttributeNames())) {
        System.out.println( key );
    }

结果:

org.springframework.web.context.request.async.WebAsyncManager.WEB_ASYNC_MANAGER
org.springframework.web.servlet.DispatcherServlet.CONTEXT
org.springframework.web.servlet.DispatcherServlet.LOCALE_RESOLVER
org.springframework.web.servlet.HandlerMapping.bestMatchingPattern
org.springframework.web.servlet.DispatcherServlet.OUTPUT_FLASH_MAP
org.springframework.web.servlet.DispatcherServlet.FLASH_MAP_MANAGER
org.springframework.core.convert.ConversionService
org.springframework.web.servlet.DispatcherServlet.THEME_SOURCE
org.springframework.web.servlet.HandlerMapping.pathWithinHandlerMapping
org.springframework.web.servlet.HandlerMapping.uriTemplateVariables
org.springframework.web.servlet.DispatcherServlet.THEME_RESOLVER

SESSION:

    for(String key : Collections.list(session.getAttributeNames())) {
        System.out.println( key );
    }

结果:

(empty)

答案 2 :(得分:0)

您可以自动装配Spring可以构建的任何内容。你是否应该是另一回事。

例如,将具有Step范围(从批处理)的bean自动装配到请求范围的bean是完全没有意义的。