본문 바로가기
Spring

Bean , 빈 등록과 사용 , 스프링 Bean의 LifeCycle

by doriver 2022. 10. 24.
이렇게 하며 객체를 만들어준다고? 
아니, 미리 만들어준거 꺼내다 준다고

빈 (Bean)

스프링 IoC 컨테이너가 관리하는 객체

 

빈(Bean)을 등록하는 방법(Component Scanning)

1. 클래스 선언부 위에 @Component 어노테이션을 사용

@Controller, @Service, @Repository는 모두 @Component를 포함하고 있으며
해당 어노테이션으로 등록된 클래스들은 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈으로 등록됩니다.

 

2. 클래스에  @Configuration을 붙이고, 메소드를 만들어 @Bean 어노테이션을 붙여준다

메소드의 리턴 객체가 스프링 빈으로 등록됨 , 빈의 이름은 기본적으로 메소드의 이름


@Bean 어노테이션

메소드의 리턴 객체가 스프링 빈 객체임을 선언함
빈의 이름은 기본적으로 메소드의 이름
@Bean(name="name")으로 이름 변경 가능
@Scope를 통해 객체 생성을 조정할 수 있음
빈 객체에 init(), destroy() 등 라이프사이클 메소드를 추가한 다음 @Bean에서 지정할 수 있음

 

Bean의 사용

스프링 부트의 경우 @Component, @Service, @Controller, @Repository, @Bean, @Configuration 등으로
빈들을 등록하고 필요한 곳에서 @Autowired를 통해 의존성 주입을 받아 사용하는 것이 일반적입니다.

 

 

스프링 Bean의 LifeCycle

스프링 IoC 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 
→ 초기화 콜백 메소드 호출(의존관계 주입이 끝나면 호출) →  사용 
→ 소멸 전 콜백 메소드 호출(메모리 반납, 연결 종료등) → 스프링 종료 

 

즉, 스프링 빈은 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다.

 

스프링은 크게 3가지 방법으로 빈 생명주기 콜백을 관리한다.
1. 인터페이스( InitializingBean, DisposableBean )
2. 설정 정보에 초기화 메소드, 종료 메소드 지정
3. @PostConstruct, @PreDestroy 어노테이션 지원


콜백(call back)

주로 콜백함수를 부를 때 사용되는 용어

콜백함수를 등록하면 특정 이벤트가 발생했을 때 해당 메소드가 호출된다. 
즉, 조건에 따라 실행될 수도 실행되지 않을 수도 있는 개념