Back to questions
Middle
156
Как инициализируются бины в Spring?
Answer from AI
sobes.tech AI
В Spring бины инициализируются контейнером Spring IoC (Inversion of Control) при запуске приложения. Основные способы инициализации:
- Через аннотации: Например, класс помечается
@Component,@Service,@Repositoryили@Controller. Контейнер сканирует пакеты и создает экземпляры этих классов. - Через конфигурационные классы: Используется
@Configurationс методами, помеченными@Bean, которые возвращают объекты для регистрации в контексте. - XML-конфигурация: В старых проектах бины описываются в XML-файлах.
Инициализация происходит в несколько этапов:
- Контейнер сканирует и создает экземпляры бинов (по умолчанию синглтоны).
- Выполняется внедрение зависимостей (через конструкторы, сеттеры или поля с
@Autowired). - Вызываются методы инициализации, если они определены (
@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();
}
}