Gymterview
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.