范围 25.03
Spring 通过范围管理 bean 的生命周期。每个范围定义了 bean 何时被创建,它的生命周期有多长,以及何时被销毁。webforJ 增加了两个自定义范围 - @EnvironmentScope
和 @RouteScope
- 它们对应于 webforJ 应用如何处理浏览器会话和导航。
了解更多关于 Spring 范围的信息
有关 Spring 的范围机制和标准范围的全面覆盖,请参见 Spring 的 bean 范围文档。
环境范围
@EnvironmentScope
注解创建的 beans 在浏览器窗口或标签会话期间存在。当用户在浏览器窗口或标签中打开应用时,webforJ 创建一个环境。任何标记为 @EnvironmentScope
的 bean 都会在每个浏览器窗口/标签中被创建一次,并一直可用,直到用户关闭标签或会话过期。
每个环境表示一个隔离的浏览器窗口或标签。环境范围的 bean 不能在不同的浏览器窗口或标签之间共享 - 每个窗口/标签接收自己的实例。
将 @EnvironmentScope
添加到任何 Spring 组件:
UserSession.java
@Component
@EnvironmentScope
public class UserSession {
private String userId;
private Map<String, Object> attributes = new HashMap<>();
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserId() {
return userId;
}
public void setAttribute(String key, Object value) {
attributes.put(key, value);
}
public Object getAttribute(String key) {
return attributes.get(key);
}
}
UserSession
bean 在浏览器窗口或标签的整个生命周期中保持状态。每个浏览器窗口/标签接收一个隔离的实例。