Ответ
Обычный объект создается разработчиком напрямую с помощью оператора new. Его жизненный цикл, зависимости и конфигурация управляются вручную в коде.
Spring Bean — это объект, который:
- Создается, ассемблируется и управляется Spring IoC-контейнером.
- Является основным строительным блоком Spring-приложения.
Ключевые особенности Spring Bean, отличающие его от обычного объекта:
- Управление контейнером: Контейнер инстанциирует bean, внедряет зависимости (DI), применяет AOP-прокси.
- Конфигурация: Может быть объявлен через аннотации (
@Component,@Service), XML или Java-конфигурацию. - Жизненный цикл: Поддерживает callback-методы (
@PostConstruct,@PreDestroy). - Scope: Может иметь различную область видимости (
singleton,prototype,request,sessionи др.) через@Scope. - Ленивая инициализация: Может быть создан только при первом обращении (
@Lazy).
Пример:
// 1. Обычный объект
MyService myService = new MyService(); // Полный контроль у разработчика, нет DI.
// 2. Spring Bean
@Component // Аннотация, помечающая класс как кандидат для создания bean.
public class MyService {
public void doWork() {
System.out.println("Working...");
}
}
// Где-то в другом компоненте:
@Autowired // Контейнер Spring внедрит (инжектирует) готовый экземпляр MyService.
private MyService myService;
Итог: Spring Bean — это объект, интегрированный в экосистему Spring, что обеспечивает инверсию управления, внедрение зависимостей и другие возможности фреймворка.