bong-u/til

Spring 개념 - Bean Lifecycle & Scope

수정일 : 2024-11-15

Bean 객체의 Lifecycle

  • Bean 객체가 생성 또는 소멸될때 특정 코드를 실행하게 할 수 있다.
  1. @PostConstruct, @PreDestroy Annotation 사용

    1// Bean 객체 생성될 때 실행
    2@PostConstruct
    3public void postConstruct() {...}
    4
    5// Bean 객체 소멸될 때 실행
    6@PreDestroy
    7public void preDestroy() {...}
    
  2. InitializingBean, DisposableBean 구현

    1public class Client implements InitializingBean, DisposableBean {
    2    // Bean 객체 생성될 때 실행
    3    @Override
    4    public void afterPropertiesSet() throws Exception {...}
    5
    6    // Bean 객체 소멸될 때 실행
    7    @Override
    8    public void destroy() throws Exception {...}
    9}
    
  3. @Bean Annotation에서 설정

    1@Bean(initMethod = "init", destroyMethod="close")
    2public class Client2{
    3    // Bean 객체 생성될 때 실행
    4    public void init() {...}
    5    // Bean 객체 소멸될 때 실행
    6    public void close() {...}
    7}
    

Bean 객체의 Scope

  • 기본적으로 Bean 객체는 Singleton scope를 갖는다
  • 하지만 임의로 Prototype scope를 갖게 할 수 있다.
    1@Configuration
    2public class AppCtx {
    3    @Bean
    4    @Scope("prototype")
    5    public Client client() {}
    6}