étant assez nouveau au printemps, j'ai une question à propos de l'annotation d'une classe. Lors de l'annotation d'une classe avec @Component
Est-ce que cela signifie que cette classe sera un Spring Bean et, par défaut, un singleton?
Oui c'est correct, @Component
est un haricot printanier et un singleton.
Si la classe appartient à la couche service, vous pouvez l'annoter avec @Service
au lieu
Mais gardez à l'esprit que pour que ces annotations soient détectées, vous devez placer cette ligne dans applicationContext.xml
:
<context:component-scan base-package="com.yourcompany" />
À propos des singletons - les haricots de printemps sont tous dans singleton scope par défaut. La seule chose à garder à l'esprit est de ne pas stocker d'état dans les variables de champ (elles ne doivent contenir que des dépendances). Ainsi, votre application sera thread-safe et vous n'aurez pas besoin d'une nouvelle instance d'un bean à chaque fois. En d'autres termes, vos haricots sont sans état.
Par défaut - oui.
Cependant, vous pouvez remplacer ce comportement en utilisant l'annotation @Scope
. Par exemple: @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)