Spring请求scoped bean内部

时间:2018-06-11 09:15:55

标签: spring spring-boot spring-bean spring-ioc

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

1 个答案:

答案 0 :(得分:1)

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

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

您可以通过查看@Autowired范围的bean来检查这一点,您将看到它实际上是代理而不是实例。

当前请求可在Spring中通过RequestContextHolder

访问