Sobes.tech
Middle

How are beans initialized in Spring?

sobes.tech AI

Answer from AI

Spring beans are initialized by the Spring IoC container (Inversion of Control) at application startup. The main initialization methods are:

  • Using annotations: For example, a class is marked with @Component, @Service, @Repository, or @Controller. The container scans packages and creates instances of these classes.
  • Using configuration classes: @Configuration is used with methods annotated with @Bean, which return objects to be registered in the context.
  • XML configuration: In older projects, beans are described in XML files.

Initialization occurs in several stages:

  1. The container scans and creates bean instances (by default, singletons).
  2. Dependency injection is performed (via constructors, setters, or fields with @Autowired).
  3. Initialization methods are called if defined (@PostConstruct or through the InitializingBean interface).

Example of annotation-based configuration:

@Component
public class MyService {
    @Autowired
    private MyRepository repository;

    @PostConstruct
    public void init() {
        // initialization code
    }
}

@Configuration
public class AppConfig {
    @Bean
    public MyRepository myRepository() {
        return new MyRepository();
    }
}