[英]Is component defined with request scope lazy loaded?
组件定义了请求 scope,它提供基于HttpServletRequest
object 的数据,如下所示。
@Component
@RequestScope
@Getter
public class RequestDataHolder {
private final Object data;
public RequestDataHolder(HttpServletRequest request) {
data = //costly operations;
}
}
什么时候实例化组件? 我想在不需要数据时防止代价高昂的操作,所以考虑用@Lazy
注释组件,但如果在默认访问时实例化它,注释将是多余的。
根据docs.spring.io :
@RequestScope 是一个组合注解,作为 @Scope("request") 的快捷方式,默认的 proxyMode() 设置为 TARGET_CLASS。
这意味着当注入 singleton bean 时,请求作用域 bean 默认作为 CGLIB 代理提供。 代理实例化 bean 或重用现有 bean。
当调用其代理的方法时,bean 被实例化,这产生与@Lazy
注释相同的效果。
当我们使用惰性初始化配置一个 bean 时,该 bean 只会在需要时创建,并注入其依赖项。 因此,当您将访问昂贵的数据时,只会调用此方法。 那么@Lazy 的使用就不会多余了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.