является довольно новым для Spring У меня вопрос об аннотировании класса. При аннотации класса с @Component
означает ли это, что этот класс будет Spring Bean и по умолчанию является singleton?
При аннотации класса с @Component это означает, что это Spring Bean и Singleton?
Ответ 1
Да, это правильно.
Если класс принадлежит служебному слою, вы можете захотеть его аннотировать с помощью @Service
Но имейте в виду, что для того, чтобы эти аннотации были обнаружены, вам нужно поместить эту строку в applicationContext.xml
:
<context:component-scan base-package="com.yourcompany" />
О синглтонах - spring beans по умолчанию находятся в одиночной области. Единственное, что вы должны иметь в виду, это то, что вы не должны хранить состояние в переменных поля (они должны содержать только зависимости). Таким образом, ваше приложение будет потокобезопасным, и каждый раз вам не потребуется новый экземпляр bean. Другими словами, ваш beans не имеет статуса.
Ответ 2
По умолчанию - Да.
Однако вы можете переопределить это поведение, используя аннотацию @Scope
. Например: @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)