Spring IoC (Inversion of Control) 컨테이너에 의해 생성되고 관리되는 객체를 의미합니다. Spring Bean은 애플리케이션의 구성 요소로 사용되며, 이들 간의 의존성을 관리하고 주입하는 역할을 합니다.
가장 큰 이유는 스프링 간 객체가 의존관계를 관리하도록 하는 것에 가장 큰 목적이 있다.
객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고, 그 빈과 의존성을 만든다.(코드의 결합도를 낮춤)
Spring Bean은 Spring 컨테이너에 의해 관리되는 객체입니다.
애플리케이션이 실행되면 Spring 컨테이너는 Bean을 생성하고, 필요에 따라 해당 Bean을 주입(Injection)하거나 제거(Destruction)하는 등의 생명 주기 관리를 수행합니다.
Spring Bean은 의존성 주입을 통해 애플리케이션의 구성 요소들 간의 의존성을 관리합니다. 의존성 주입은 객체 간의 결합도를 낮추고, 유지 보수성을 높이는 데 중요한 역할을 합니다. Spring은 다음 세 가지 방식으로 의존성 주입을 지원합니다:
Spring Bean은 XML, Java 어노테이션, Java Config 클래스를 통해 설정될 수 있습니다. 이는 애플리케이션의 다양한 설정을 중앙 집중화하고, 구성 관리가 용이하게 합니다.
Spring Bean은 여러 가지 스코프(scope)를 지원하여 Bean의 생성 및 사용 범위를 지정할 수 있습니다. 기본 스코프는 singleton으로, 애플리케이션 컨텍스트 내에서 Bean의 단일 인스턴스가 생성됩니다. 다른 스코프에는 prototype, request, session, application, websocket 등이 있습니다.
Spring Bean은 객체의 생성, 초기화, 소멸 과정에서 특정 메서드를 호출할 수 있는 생명주기 콜백을 지원합니다. InitializingBean, DisposableBean 인터페이스를 구현하거나, @PostConstruct, @PreDestroy 어노테이션을 사용할 수 있습니다.
Spring Bean은 AOP를 통해 횡단 관심사(cross-cutting concerns)를 모듈화할 수 있습니다. 이는 로깅, 보안, 트랜잭션 관리 등의 공통 기능을 애플리케이션의 비즈니스 로직에서 분리하는 데 도움을 줍니다.
Spring Bean Life Cycle 흐름 정리
1) 스프링 컨테이너 생성
2) 스프링 빈 생성
3) 의존성 주입
4) 초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출
5) 사용
6) 소멸전 콜백 :빈이 소멸되기 직전에 호출
7) 스프링 종료