我正在开发基于flex的Web应用程序,并希望在会话范围设置一些属性,因此在spring bean中使用scope =“session”属性。以下是我的配置: -
<bean id="cacheLoader" class="com.....CacheLoader" scope="session">
<property name="commonService" ref="commonService" />
<aop:scoped-proxy></aop:scoped-proxy>
</bean>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
我仍然收到此错误: -
创建名为'scopedTarget.cacheLoader'的bean时出错:当前线程的作用域'session'无效;考虑为这个bean定义一个范围代理,如果你想从一个单例引用它;嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是指在实际Web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet / DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求。
如果我在某些配置步骤中丢失或做错了,请建议我。
提前致谢。
答案 0 :(得分:1)
在上下文配置中必须有一些单独的(默认)作用域bean引用“cacheLoader”。默认情况下,Spring在启动期间实例化单例bean,并且在此期间没有http会话可用,因此您的异常。
我建议将cacheLoader的特定于会话的部分进行分解,并确保没有单例引用它。