spring - Spring请求范围的bean内部
问题描述
我一直在为我的应用程序使用请求范围的 bean,我很想知道 spring 如何在应用程序上下文中存储这些类型的 bean?是否有链接到它的http reuqest id?任何帮助/文档都是最受欢迎的,因为我没有找到太多关于它的信息。
解决方案
每个Scope
都有自己的实现,它知道对象的存储方式和位置。由 实现的请求范围RequestScope
将对象存储在请求属性中(参见源代码)。
当 Spring 找到一个作用域 bean(即带有 ,@Scope
或特定注释@RequestScope
的bean @SessionScope
)时,Spring 所做的是创建该对象的代理。代理将使用前面提到的Scope
实例查找实际对象实例(或创建并存储它)。然后它将方法调用传递给实际的实例。
您可以通过查看@Autowired
作用域 bean 来检查这一点,您会发现它实际上是代理而不是真实实例。
当前请求可以在 Spring 中通过RequestContextHolder
.
推荐阅读
- angular - Angular 7 + 路由 + 差异
- android-studio - 我在 Android Studio 3.3.2 中找不到主题编辑器
- apache - 未测量 CouchDB 响应时间统计信息
- php - PHP:如何知道数字是否在 int 区间内?
- bixby - 如何训练 Bixby 打开应用程序?
- android - Android - Youtube API V3 搜索不起作用
- python - python中的TIMESTAMP格式转换
- python - 从 py 转换为 exe 后应用程序无法正常工作
- javascript - http get 请求状态返回 404 时显示 Angular Material mat-error
- java - 具有非紧凑字符串的 Java 紧凑字符串 equalsIgnoreCase 计算结果为 false