[Spring] Spring Bean과 LifeCycle

사과알러지·2024년 3월 8일
0

Spring

목록 보기
3/5
post-custom-banner

Spring Container

ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(AppConfig.class);

ApplicationContext를 스프링 컨테이너라 한다.

이렇게 생성된 컨테이너는 등록된 자바 객체를 관리한다.

이때 자바 객체를 스프링은 Bean이라고 부른다.

  1. Bean의 생명주기 (빈의 인스턴스화, 할당, 제거)를 관리한다.
  2. DI를 통해 애플리케이션의 컴포넌트를 관리한다.
  3. 서로 다른 Bean들을 연결한다.

이를 통해 객체간의 의존도와 결합도를 낮추고 높은 캡슐화를 제공한다.

Spring Bean

앞서 살펴봤다시피 스프링 빈은 자바 객체이며

스프링 컨테이너에 의해 관리되는 재사용이 가능한 컴포넌트이다.

@Bean을 통해 메소드로부터 반환되는 객체를 스프링 빈으로 등록할 수 있다.

Spring Bean LifeCycle

스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다.

객체 생성 -> 의존관계 주입

스프링 빈은 객체가 생성되고 의존관계가 주입된 이후부터 데이터를 사용할 준비를 마친다.

즉 초기화 작업은 이러한 DI 작업이 완료된 이후에나 호출해야한다.

이러한 호출 시점을 스프링 컨테이너가 알려준다.

스프링 빈의 이벤트 라이프사이클은 다음과 같다.

스프링은 의존관계가 주입되면 스프링 빈에게 콜백 메서드를 통해

초기화 시점을 알려준다.

  • 초기화 콜백 : 빈이 생성되고, 의존관계 주입이 완료된 후 호출
  • 소멸전 콜백 : 빈이 소멸되기 직전에 호출

이를 @PostConstruct , @PreDestroy 를 통해 간편하게 초기화와 종료를 실행할 수 있다.

💡 이러한 어노테이션 방식은 순수 자바 기술이라는 장점이 있지만 외부 라이브러리에는 사용할 수 없다는 단점이 있다.
외부 라이브러리에서 초기화, 소멸전 콜백을 사용해야한다면
@BeaninitMethoddestoryMethod를 사용하자

profile
노는 건 쉽고 코딩은 어려워
post-custom-banner

0개의 댓글