586 votes

Printemps: @Composante rapport @Bean

Je comprends qu' @Component d'annotation a été introduit au printemps 2.5 afin de se débarrasser de xml bean définition et à l'aide classpath de la numérisation.

@Bean a été introduit au printemps 3.0 et peut être utilisé avec @Configuration afin de bien se débarrasser de fichier xml et l'utilisation de java config à la place.

Aurait-il été possible de ré-utiliser l' @Component annotation au lieu d'introduire @Bean d'annotation? Ma compréhension est que le but final est de créer des haricots dans les deux cas.

510voto

skaffman Points 197885

@Component et @Bean faire deux choses tout à fait différentes, et ne doivent pas être confondus.

@Component (et @Service et @Repository) sont utilisés pour la détection automatique et l'auto-configuration à l'aide de fèves de classpath de la numérisation. Il y a un implicite one-to-one mapping entre les annoté de la classe et le haricot (c'est à dire un bean par classe). Contrôle du câblage est assez limité avec cette approche, puisque c'est purement déclaratif.

@Bean est utilisé pour explicitement déclarer un seul haricot, plutôt que de laisser le Printemps le faire automatiquement comme ci-dessus. Il dissocie la déclaration du bean à partir de la définition de la classe, et permet de créer et de configurer les haricots exactement comment vous choisissez.

Pour répondre à votre question...

aurait-il été possible de ré-utiliser l' @Component annotation au lieu d'introduire @Bean d'annotation?

Bien sûr, sans doute; mais il n'en a pas, depuis, les deux sont très différents. Le printemps est déjà pas déjà assez compliquée sans brouiller les cartes supplémentaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X