【发布时间】:2017-09-06 20:13:34
【问题描述】:
我不知道我遗漏了什么,检查了所有关于请求范围 bean 创建的链接,但我遗漏了一些东西,这就是请求范围 bean 没有创建的原因。
这是请求范围的 bean 类:
package com.spring.beans;
public class RequestScopedBean
{
public RequestScopedBean()
{
System.out.println("RequestScopedBean constructor");
}
@Autowired
HttpServletRequest request;
public void getSessionId()
{
if(request != null)
{
System.out.println(request.getSession().getId());
}
}
}
Web.xml
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>com.spring.systemaudit.OESLog4jListener</listener-class>
</listener>
<listener>
<listener-class>se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventor</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
...
</web-app>
和根上下文.xml
...
<bean id="requestScopedBean" class="com.spring.beans.RequestScopedBean" scope="request">
</bean>
...
如果我创建scope="singleton",则创建 bean,因为我可以在启动服务器时在控制台上看到 sysout,那么为什么不使用 scope="request"。我错过了什么?
【问题讨论】: