[Spring] Bean LifeCycle

양정훈·2022년 8월 16일
0
  • Bean은 객체 생성 -> 의존관계 주입의 LifeCycle을 가짐
  1. Component Scan을 통해 Bean들을 스캔 (@Configuration, @Service, ...) 해 IoC Container에 등록
  2. Bean 객체 생성
  3. Dependency Injection
    • 생성자 주입 방식의 경우, 2번과 3번이 한 단계에서 일어남

LifeCycle Callback

@PostConstruct, @PreDestroy

  • 어노테이션으로 LifeCycle 콜백을 구현
@Component
public class Foo {
    @PostConstruct
    public void foo() { ... } // DI 후 실행되는 콜백
    
    @PreDestroy
    public void bar() { ... } // Bean이 종료되기 전 (Container가 닫히기 전) 에 실행되는 콜백
}

InitializingBean, DisposableBean

  • interface를 구현해 콜백을 구현
public class Foo implements InitializingBean {
	@Override
    public void afterPropertiesSet() { ... } // DI Callback
}

public class Foo implements DisposableBean {
	@Override
    public void destroy() { ... } // Bean Destory Callback
}

@Bean(initMethod), @Bean(destroyMethod)

  • @Bean 어노테이션 속성으로 콜백을 구현
@Bean(initMethod = "init", destroyMethod = "destroy")
public Foo initFoo() {
	return new Foo();
}

class Foo {
	public void init() { ... } // DI Callback
    public void destroy() { ... } // Bean Destroy Callback
}

실행 순서

  1. @PostConstruct, @PreDestroy
  2. InitializingBean, DisposableBean
  3. @Bean(initMethod), @Bean(destroyMethod)

0개의 댓글