java不支持Spring代理请求属性吗?
如果在某个地方我有一个带有@Autowired
HttpSession或HttpServletRequest的单例@Component
bean“Foo”,Foo本身是否必须声明为session(或request)作用域,或者我可以把它作为一个简单的单例——在这种情况下,HttpSession和/或HttpServletRequest可能已经通过Spring作为作用域代理注入了
你可以在下面搜索框中键入要查询的问题!
如果在某个地方我有一个带有@Autowired
HttpSession或HttpServletRequest的单例@Component
bean“Foo”,Foo本身是否必须声明为session(或request)作用域,或者我可以把它作为一个简单的单例——在这种情况下,HttpSession和/或HttpServletRequest可能已经通过Spring作为作用域代理注入了
# 1 楼答案
我的理解是Spring确实使用了代理,是的。Spring允许通过将代理注入到单例对象中,将请求或会话范围的对象注入到单例对象中
对于Spring MVC,我认为注入的代理由
ThreadLocal
变量支持,因为每个请求都绑定到一个线程。然后,真正的HttpServletRequest
就可以通过这个注入的代理来使用,在调用时,这个代理将委托给ThreadLocal
因此,您不需要将“Foo”声明为会话或请求作用域,并且可以将其保持为单例