2015-11-16 3 views
0

Диапазон значений по умолчанию Spring: singleton. Тем не менее, для контроллеров MVC, которые запускаются для обслуживания веб-запросов, и в моем проекте могут содержать факсимильные элементы @Autowired, я хотел бы заставить их по умолчанию быть как минимум request - если не прототип, без аннотирование каждого и каждый контроллер с @ScopeForce Spring MVC-контроллеры для запроса области

Как вы думаете, это возможно? Если да, то как?

ответ

1

Сложная аннотация может быть хорошей подгонке.

@Target(TYPE) 
@Retention(RUNTIME) 
@Documented 
@Controller 
@Scope(WebApplicationContext.SCOPE_REQUEST) 
public @interface RequestScopedController { ... } 

Контроллеры будут использовать @RequestScopedController аннотацию вместо @Controller.

+0

Прохладный, я не знал о составных аннотациях. Я, вероятно, соглашусь с этим, если решение предотвратит совпадение имен (например, MainController-s под разными пакетами) –

+0

У вас возникли проблемы с именем? –

+0

Да. Например, у меня есть несколько 'MainController' в нескольких пакетах, названных так, потому что они служат '/ path/to/main' в нескольких путях –

1

вы должны добавить @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) на своих бобах (не контроллерах), которые будут автоматически подключены к вашему контроллеру. Таким образом, вы сообщаете весне, чтобы создать прокси-сервер вокруг вашего автообученного компонента, поэтому его можно использовать в одноэлементном классе.

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