@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.