При аннотировании класса с помощью @Component это означает, что это Spring Bean и Singleton? - PullRequest
90 голосов
/ 06 мая 2011

Будучи довольно новым для Spring, у меня есть вопрос об аннотировании класса.При аннотировании класса с помощью @Component это означает, что этот класс будет Spring Bean и по умолчанию синглтоном?

Ответы [ 2 ]

104 голосов
/ 06 мая 2011

Да, это правильно, @Component - это Spring bean и Singleton.

Если класс принадлежит сервисному слою, вы можете добавить к нему @Service вместо

Но имейте в виду, что для того, чтобы эти аннотации были обнаружены, вам нужно поместить эту строку в applicationContext.xml:

<context:component-scan base-package="com.yourcompany" />

О синглетонах - по умолчанию все бобы весны находятся в одноэлементной области видимости. Единственное, что вы должны иметь в виду, это то, что вы не должны хранить состояние в переменных поля (они должны содержать только зависимости). Таким образом, ваше приложение будет поточно-ориентированным, и вам не потребуется каждый раз новый экземпляр компонента. Другими словами, ваши бобы не имеют состояния.

12 голосов
/ 21 августа 2017

По умолчанию - Да.

Однако вы можете переопределить это поведение, используя аннотацию @Scope. Например: @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...