我一直在为我的应用程序使用请求范围的bean,我很想知道spring如何在应用程序上下文中存储这些bean?是否有一个http reuqest id链接到它?任何帮助/文档都是最受欢迎的,因为我没有发现它。
答案 0 :(得分:1)
每个Scope
都有自己的实现,它知道对象的存储方式和位置。请求范围由RequestScope
实现,将对象存储在请求属性中(请参阅sources)。
当Spring发现一个作用域bean(即带有@Scope
的bean或特定注释如@RequestScope
,@SessionScope
)时,Spring会创建该对象的代理。代理将使用前面提到的Scope
实例查找实际的对象实例(或创建它并存储它)。然后它会将方法调用传递给实际的实例。
您可以通过查看@Autowired
范围的bean来检查这一点,您将看到它实际上是代理而不是实例。
当前请求可在Spring中通过RequestContextHolder
。