首页 > 解决方案 > Spring请求范围的bean内部

问题描述

我一直在为我的应用程序使用请求范围的 bean,我很想知道 spring 如何在应用程序上下文中存储这些类型的 bean?是否有链接到它的http reuqest id?任何帮助/文档都是最受欢迎的,因为我没有找到太多关于它的信息。

标签: springspring-bootspring-beanspring-ioc

解决方案


每个Scope都有自己的实现,它知道对象的存储方式和位置。由 实现的请求范围RequestScope将对象存储在请求属性中(参见源代码)。

当 Spring 找到一个作用域 bean(即带有 ,@Scope或特定注释@RequestScope的bean @SessionScope)时,Spring 所做的是创建该对象的代理。代理将使用前面提到的Scope实例查找实际对象实例(或创建并存储它)。然后它将方法调用传递给实际的实例。

您可以通过查看@Autowired作用域 bean 来检查这一点,您会发现它实际上是代理而不是真实实例。

当前请求可以在 Spring 中通过RequestContextHolder.


推荐阅读