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