Junior — Middle
What is the difference between @Bean and @Component annotations and when can one replace the other?
sobes.tech AI
Answer from AI
In the Spring Framework, the annotations @Component and @Bean are used to define beans (objects managed by Spring), but they are used in different contexts:
-
@Componentis an annotation placed above a class. Spring automatically scans classes with this annotation (when component scanning is enabled) and creates their instances as beans. It is used for simple and quick component definition. -
@Beanis an annotation placed above a method in a class annotated with@Configuration. The method returns an object that Spring registers as a bean. It allows for more flexible bean creation, such as with parameters, logic, etc.
When can one replace the other:
- If you have a simple class without complex creation logic, it is better to use
@Component. - If creating a bean requires additional logic, parameters, or you want to explicitly control creation, use
@Bean.
Example:
@Component
public class MyService {
// simple component
}
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService(); // creation logic can be added
}
}
Thus, @Component is a declarative way, @Bean is programmable.