Sobes.tech
Junior

What is the difference between a component and a bean in the context of Java?

sobes.tech AI

Answer from AI

  • Component - this is a more general concept in the context of the Spring Framework. Components are classes annotated with @Component, @Service, @Repository, @Controller, or custom annotations that themselves are annotated with @Component. Spring automatically scans these classes and registers them as beans in the ApplicationContext.
  • Bean - this is an object managed by the Spring IoC container. It is instantiated, configured, and managed by the container. A bean can be any object registered in the container, not necessarily a component found through package scanning. Beans can be explicitly defined in configuration (for example, using the @Bean annotation in JavaConfig or in XML).

Key difference:

All components found by Spring during scanning become beans. But not all beans are components found through scanning. A bean can be created by other means, for example, explicitly defined in configuration.

Example:

// spring bean configuration using JavaConfig
@Configuration
public class AppConfig {

    @Bean // This method defines a bean
    public MyBean myBean() {
        return new MyBean();
    }
}

// A simple Pojo class, not a component by itself
public class MyBean {
    // ...
}

// A component class
@Component // This class is a component
public class AnotherComponent {
    // ...
}

In this example, myBean is a bean created using a method annotated with @Bean. AnotherComponent is a component that also becomes a bean thanks to the @Component annotation.

What is the difference between a component and a bean… - sobes.tech