Étant assez nouveau dans Spring, j'ai une question sur l'annotation d'une classe. Lorsque vous annotez une classe avec, @Component
cela signifie-t-il que cette classe sera un Spring Bean et par défaut un singleton?
la source
Étant assez nouveau dans Spring, j'ai une question sur l'annotation d'une classe. Lorsque vous annotez une classe avec, @Component
cela signifie-t-il que cette classe sera un Spring Bean et par défaut un singleton?
Oui, c'est correct, @Component
c'est un haricot de printemps et un singleton.
Si la classe appartient à la couche de service, vous souhaiterez peut-être l'annoter à la @Service
place
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 beans spring sont tous dans la portée singleton par défaut. La seule chose que vous devez garder à l'esprit est que vous ne devez pas stocker l'état dans des 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 beans sont apatrides.
Par défaut - Oui.
Cependant, vous pouvez remplacer ce comportement à l'aide de l'
@Scope
annotation. Par exemple:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
la source