2014-12-26 2 views
0

Является ли распространенной практикой, когда одноцветные бобы были введены в бобы с запросом, которые вводились в однобортные бобы? Например, что-то вроде этого:Is scope = запрос подходит для применения с пружиной большой нагрузки?

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

public class ApplicationController { 

    @Autowired 
    private CurrentUser currentUser; 
    ... 
} 

ли какие-либо накладные расходы на управление памятью возможно? Эта реализация защищена от протектора? Спасибо!

ответ

2

По существу, что будет происходить, будет экземпляр CurrentUser для каждого активного запроса http. Эти экземпляры управляются за прокси-сервером, созданным Spring, и сам экземпляр поддерживается как атрибут http-запроса, а жизненный цикл привязан к этому запросу.

Я бы сказал, что это будет дорогостоящим с точки зрения усилий по созданию экземпляра и автоподготовке каждого экземпляра запроса CurrentUser. Это не должно быть дорогостоящей памятью, поскольку экземпляры недолговечны и доступны для запроса. О том, является ли экземпляр потокобезопасным, да, это так.

Одна ошибка, однако, proxyMode должен быть ScopedProxyMode.TARGET_CLASS, так как ваш класс CurrentUser не реализует никаких интерфейсов.

+0

Спасибо! О proxyMode = ScopedProxyMode.INTERFACES - Я знаю этот момент, спасибо. Я сократил детали наследования. –

Смежные вопросы