Что такое Spring Bean?

«Что такое Spring Bean?» — вопрос из категории Spring, который задают на 29% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Spring Bean — это объект, жизненным циклом которого управляет контейнер Spring IoC (Inversion of Control). Бин создается, настраивается и ассемблируется на основе метаданных конфигурации (XML, аннотации, Java-код).

Ключевые характеристики:

  • Управление контейнером: Spring создает бины, внедряет зависимости (DI) и управляет их жизненным циклом.
  • Scope (область видимости): Определяет время жизни и количество экземпляров бина.
    • singleton (по умолчанию) — один экземпляр на контейнер.
    • prototype — новый экземпляр при каждом запросе.
    • request, session, application (для веб-приложений).
  • Конфигурация: Может быть объявлен несколькими способами.

Примеры объявления бина:

1. Через аннотацию @Component (и ее специализации @Service, @Repository):

@Service // Spring обнаружит и создаст бин этого класса
public class UserService {
    // логика сервиса
}

2. Через Java-конфигурацию (@Configuration + @Bean):

@Configuration
public class AppConfig {
    @Bean // Метод возвращает объект, который становится бином
    public DataSource dataSource() {
        return new DriverManagerDataSource(
            "jdbc:h2:mem:testdb", "sa", "");
    }
}