I understand that @Component
annotation was introduced in spring 2.5 in order to get rid of xml bean definition by using classpath scanning.
@Bean
was introduced in spring 3.0 and can be used with @Configuration
in order to fully get rid of xml file and use java config instead.
Would it have been possible to re-use the @Component
annotation instead of introducing @Bean
annotation? My understanding is that the final goal is to create beans in both cases.
15 s
@Component
Preferable for component scanning and automatic wiring.
When should you use @Bean?
Sometimes automatic configuration is not an option. When? Let’s imagine that you want to wire components from 3rd-party libraries (you don’t have the source code so you can’t annotate its classes with @Component), so automatic configuration is not possible.
The @Bean annotation returns an object that spring should register as bean in application context. The body of the method bears the logic responsible for creating the instance.