middle
Что такое Spring Bean?
Spring Bean – объект, который создаётся, управляется и конфигурируется IoC-контейнером Spring. По сути, это обычный Java-объект (POJO), жизненный цикл которого контролируется контейнером.
Способы объявления бинов
Пример
// 1. Аннотации на классе (Component Scanning)
@Component
public class MyBean { }
// 2. Java-конфигурация (@Bean)
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
// 3. XML-конфигурация (устаревший подход)
// <bean id="myService" class="com.example.MyServiceImpl"/>
Ключевые характеристики бина
- id/имя – уникальный идентификатор бина в контейнере
- Класс – конкретный класс объекта
- Scope – область видимости (singleton, prototype и др.)
- Зависимости – другие бины, которые ему нужны
- Callbacks – методы инициализации и уничтожения
Частая ошибка
Создание объекта вручную через new вместо получения из контейнера. Spring не будет управлять таким объектом, аннотации @Autowired, @Transactional и другие не будут работать:
Пример
// НЕПРАВИЛЬНО -- Spring не управляет этим объектом
MyService service = new MyService();
// ПРАВИЛЬНО -- получаем бин из контейнера
@Autowired
private MyService service;
На собеседовании: важно показать понимание того, что бин – это не просто объект, а объект, управляемый контейнером. Частая ошибка – забыть упомянуть, что создание объекта через
newобходит контейнер и отключает все возможности Spring.