Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 在普通servlet中访问Spring代理会话对象_Spring Mvc_Spring Aop - Fatal编程技术网

Spring mvc 在普通servlet中访问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

我已经声明了一个表单对象作为代理作用域并在会话中维护。每当我自动连接表单对象时,代码都能正常工作。如果我想在普通的POJO类中访问war层中的form对象,那么它将失败,因为我没有在普通的Java类(非Spring)中自动连接。代码片段

@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对象,前提是它位于单线程/会话中