Étant relativement nouveau dans Spring, j'ai une question sur l'annotation d'une classe. Lorsque l'on annote une classe avec @Component
Cela signifie-t-il que cette classe sera un Spring Bean et par défaut un singleton ?
Réponses
Trop de publicités?Oui, c'est exact, @Component
est un Spring bean et un Singleton.
Si la classe appartient à la couche service, vous pouvez l'annoter avec @Service
au lieu de
Mais gardez à l'esprit que pour que ces annotations soient détectées, vous devez placer cette ligne dans le fichier applicationContext.xml
:
<context:component-scan base-package="com.yourcompany" />
À propos des singletons - les beans de Spring sont tous dans une portée singleton par défaut. La seule chose que vous devez avoir à l'esprit est que vous ne devez pas stocker l'état dans les variables de champ (elles ne doivent contenir que les 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 beans sont sans état.