Spring mvc 在普通servlet中访问Spring代理会话对象
我已经声明了一个表单对象作为代理作用域并在会话中维护。每当我自动连接表单对象时,代码都能正常工作。如果我想在普通的POJO类中访问war层中的form对象,那么它将失败,因为我没有在普通的Java类(非Spring)中自动连接。代码片段Spring mvc 在普通servlet中访问Spring代理会话对象,spring-mvc,spring-aop,Spring Mvc,Spring Aop,我已经声明了一个表单对象作为代理作用域并在会话中维护。每当我自动连接表单对象时,代码都能正常工作。如果我想在普通的POJO类中访问war层中的form对象,那么它将失败,因为我没有在普通的Java类(非Spring)中自动连接。代码片段 @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "session") class FormA{ } 在SpringController中,我可以在下面的SpringController中检索Fo
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "session")
class FormA{
}
在SpringController中,我可以在下面的SpringController中检索FormA
@Controller
Class ControllerB{
@Autowired
FormA formA;
}
但我的要求是在普通Servlet(非Spring类,Servlet2.4实现)中访问FormA。如何在Servlet中检索FormA实例
在web.xml中添加了下面的侦听器条目,但它返回新的formA,而不是会话中的原始formA对象
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
org.springframework.web.context.request.RequestContextListener
如果将请求、会话和全局会话范围的bean注入到单例bean或原型范围的bean中,Spring将注入生成的代理作为依赖项
填充代理的目标对象时,如果是请求作用域,它将存储为threadlocal对象,而对于会话作用域,它将存储在会话中。在代理上进行调用时,它将把调用委托给threadlocal/会话作用域的目标对象
在您的情况下,如果已填充FormA对象,并且已将代理注入控制器,则您应该能够在该请求中使用此代理来访问FormA对象,前提是它位于单线程/会话中