[CS공부] SpringBean이란?

탄니야·2024년 7월 22일

cs공부

목록 보기
7/8

Spring Bean 이란?

Spring IoC (Inversion of Control) 컨테이너에 의해 생성되고 관리되는 객체를 의미합니다. Spring Bean은 애플리케이션의 구성 요소로 사용되며, 이들 간의 의존성을 관리하고 주입하는 역할을 합니다.

스프링 빈(Bean) 사용이유

가장 큰 이유는 스프링 간 객체가 의존관계를 관리하도록 하는 것에 가장 큰 목적이 있다.
객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고, 그 빈과 의존성을 만든다.(코드의 결합도를 낮춤)

Spring Bean의 역할

1. 객체 관리

Spring Bean은 Spring 컨테이너에 의해 관리되는 객체입니다.
애플리케이션이 실행되면 Spring 컨테이너는 Bean을 생성하고, 필요에 따라 해당 Bean을 주입(Injection)하거나 제거(Destruction)하는 등의 생명 주기 관리를 수행합니다.

2. 의존성 주입 (Dependency Injection)

Spring Bean은 의존성 주입을 통해 애플리케이션의 구성 요소들 간의 의존성을 관리합니다. 의존성 주입은 객체 간의 결합도를 낮추고, 유지 보수성을 높이는 데 중요한 역할을 합니다. Spring은 다음 세 가지 방식으로 의존성 주입을 지원합니다:

  • 필드 주입(Field Injection): @Autowired를 필드에 사용
  • 생성자 주입(Constructor Injection): 생성자를 통해 주입
  • 세터 주입(Setter Injection): 세터 메서드를 통해 주입

3. 설정 및 구성

Spring Bean은 XML, Java 어노테이션, Java Config 클래스를 통해 설정될 수 있습니다. 이는 애플리케이션의 다양한 설정을 중앙 집중화하고, 구성 관리가 용이하게 합니다.

  • XML 설정: XML 파일을 통해 Bean을 정의하고 설정.
  • Java 어노테이션 설정: @Component, @Service, @Repository, @Controller 등 어노테이션을 통해 Bean을 정의하고 자동으로 감지.
  • Java Config 설정: @Configuration과 @Bean 어노테이션을 사용하여 Java 클래스에서 직접 Bean을 정의.

4. 스코프 (Scope)

Spring Bean은 여러 가지 스코프(scope)를 지원하여 Bean의 생성 및 사용 범위를 지정할 수 있습니다. 기본 스코프는 singleton으로, 애플리케이션 컨텍스트 내에서 Bean의 단일 인스턴스가 생성됩니다. 다른 스코프에는 prototype, request, session, application, websocket 등이 있습니다.

5. 생명주기 콜백 (Lifecycle Callback)

Spring Bean은 객체의 생성, 초기화, 소멸 과정에서 특정 메서드를 호출할 수 있는 생명주기 콜백을 지원합니다. InitializingBean, DisposableBean 인터페이스를 구현하거나, @PostConstruct, @PreDestroy 어노테이션을 사용할 수 있습니다.

6. AOP(Aspect-Oriented Programming) 지원

Spring Bean은 AOP를 통해 횡단 관심사(cross-cutting concerns)를 모듈화할 수 있습니다. 이는 로깅, 보안, 트랜잭션 관리 등의 공통 기능을 애플리케이션의 비즈니스 로직에서 분리하는 데 도움을 줍니다.

스프링 빈의 생명주기(Bean Life Cycle)

Spring Bean Life Cycle 흐름 정리
1) 스프링 컨테이너 생성
2) 스프링 빈 생성
3) 의존성 주입
4) 초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출
5) 사용
6) 소멸전 콜백 :빈이 소멸되기 직전에 호출
7) 스프링 종료

profile
반갑습니다

0개의 댓글