Ответ
Бин (Bean) в Spring — это объект, жизненным циклом которого управляет IoC-контейнер (ApplicationContext). Контейнер создаёт, конфигурирует и связывает бины на основе метаданных (аннотаций, XML или Java-конфигурации).
Ключевая роль бинов:
- Основной строительный блок приложения. Все компоненты (сервисы, репозитории, контроллеры) объявляются как бины.
- Реализация внедрения зависимостей (DI). Контейнер автоматически разрешает и внедряет зависимости между бинами.
- Управление жизненным циклом. Spring контролирует создание, инициализацию (через
@PostConstructилиInitializingBean) и уничтожение (через@PreDestroyилиDisposableBean) бина. - Гибкость конфигурации через скоупы. Например:
@Singleton(по умолчанию) — один экземпляр на контейнер.@Prototype— новый экземпляр при каждом запросе.@Request,@Session,@Application(для веб-приложений).
Пример объявления и использования бина:
@Service // Объявление бина (стереотипная аннотация @Component)
public class UserService {
private final UserRepository userRepository;
// Внедрение зависимости через конструктор (рекомендуемый способ)
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User findUser(Long id) {
return userRepository.findById(id).orElse(null);
}
}
@Repository
public class JpaUserRepository implements UserRepository {
// Реализация репозитория
}
Бины обеспечивают слабую связанность, тестируемость и централизованное управление объектами в приложении.