【问题标题】:Is scope=request good fit for high-load spring application?scope=request 是否适合高负载弹簧应用?
【发布时间】:2014-12-26 17:01:54
【问题描述】:

将单例 bean 注入到请求范围的 bean 中是常见的做法,后者注入到单例范围的 bean 中吗? 例如,像这样:

@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
public class CurrentUser {
    @Resource
    private UserRepository userRepository;
    ...
}

public class ApplicationController {

    @Autowired
    private CurrentUser currentUser;
    ...
}

内存管理是否可能产生任何间接费用?这个实现是安全的吗? 谢谢!

【问题讨论】:

    标签: spring spring-mvc scope named-scope


    【解决方案1】:

    基本上会发生的是,对于每个活动的 http 请求,都会有一个 CurrentUser 实例。实例在 Spring 创建的代理之后进行管理,并且实例本身作为 http 请求属性进行维护,并且生命周期与该请求相关联。

    我会说,就实例化和自动装配每个 CurrentUser 请求实例而言,这将是昂贵的。它不应该是昂贵的内存明智的,因为实例是短暂的并且范围是请求的。关于实例是否是线程安全的,是的。

    但有一个错误,proxyMode 必须是 ScopedProxyMode.TARGET_CLASS,因为您的 CurrentUser 类没有实现任何接口。

    【讨论】:

    • 谢谢!关于 proxyMode=ScopedProxyMode.INTERFACES - 我知道这一点,谢谢。我缩短了继承细节。
    猜你喜欢
    • 2021-01-27
    • 2015-12-29
    • 2020-05-28
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多