Będąc całkiem nowym w Spring, mam pytanie dotyczące dodawania adnotacji do zajęć. Czy dodawanie adnotacji do klasy @Component
oznacza, że będzie to Spring Bean, a domyślnie singleton?
źródło
Będąc całkiem nowym w Spring, mam pytanie dotyczące dodawania adnotacji do zajęć. Czy dodawanie adnotacji do klasy @Component
oznacza, że będzie to Spring Bean, a domyślnie singleton?
Tak, zgadza się, @Component
to wiosenna fasola i singleton.
Jeśli klasa należy do warstwy usług, możesz @Service
zamiast tego dodać do niej adnotację
Pamiętaj jednak, że aby te adnotacje zostały wykryte, musisz umieścić ten wiersz w applicationContext.xml
:
<context:component-scan base-package="com.yourcompany" />
Informacje o singletonach - wszystkie fasolki jare są domyślnie w zakresie pojedynczych. Jedyną rzeczą, o której musisz pamiętać, jest to, że nie powinieneś przechowywać stanu w zmiennych polowych (powinny one zawierać tylko zależności). Dzięki temu Twoja aplikacja będzie bezpieczna dla wątków i nie będziesz potrzebować za każdym razem nowej instancji komponentu bean. Innymi słowy, Twoje ziarna są bezpaństwowcami.
Domyślnie - tak.
Możesz jednak zmienić to zachowanie, używając
@Scope
adnotacji. Na przykład:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
źródło