Sobes.tech
Назад к вопросам
Middle
155

Как инициализируются бины в Spring?

Ответ от нейросети

sobes.tech AI

В Spring бины инициализируются контейнером Spring IoC (Inversion of Control) при запуске приложения. Основные способы инициализации:

  • Через аннотации: Например, класс помечается @Component, @Service, @Repository или @Controller. Контейнер сканирует пакеты и создает экземпляры этих классов.
  • Через конфигурационные классы: Используется @Configuration с методами, помеченными @Bean, которые возвращают объекты для регистрации в контексте.
  • XML-конфигурация: В старых проектах бины описываются в XML-файлах.

Инициализация происходит в несколько этапов:

  1. Контейнер сканирует и создает экземпляры бинов (по умолчанию синглтоны).
  2. Выполняется внедрение зависимостей (через конструкторы, сеттеры или поля с @Autowired).
  3. Вызываются методы инициализации, если они определены (@PostConstruct или через интерфейс InitializingBean).

Пример конфигурации с аннотациями:

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

    @PostConstruct
    public void init() {
        // код инициализации
    }
}

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