ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Bean Life Cycle
    Spring/Spring 기본 지식 2020. 3. 15. 21:16
    반응형

    Bean 생명주기

     

     

    빈 생명주기 메소드

    초기화 메소드(initialization method)

    초기화 메소드는 빈 오브젝트가 생성되고 DI 작업까지 마친 다음에 실행되는 메소드를 말한다.

    오브젝트의 기본적인 초기화 작업은 생성자에서 진행함녀 된다. 하지만 DI를 통해 모든 프로터티가 주입된 후에야 가능한 작업도 있다. 이런경우 사용할 수 있는것이 초기화메소드다.

     

    초기화 콜백 인터페이스

    • InializingBean 인터페이스를 구현해서 빈을 작성하는 방법이다.
    • InializingBean의 afterPropertiesSet() 메소드는 이름 그대로 프로퍼티 설정까지 마친 뒤에 호출된다.
    • 다른 방법이 더 건결하며, 빈 코프에 스프링 인터페이스를 노출하기 때문에 권장되지 않는다.

     

    init-method 지정

    XML을 이용하면 bean을 등록하면 <bean>태그에 init-method애드리뷰트를 넣어서 초기화 작업을 수행할 메소드 일므을 지정할 수 있다.

    <bean id="test" class="kr.co.study" init-method="initResource"/>

    DI작업까지 마친뒤ㅏ에 initResouce() 메소드가 실행하도록 선언을 하면 스플이 API가 노출되지 않기 때문에  깔끔하다는 장점이 있지만, 코드만 보고는 초기화 메소드가 호출될지 알수가 없다.

     

    @Postconstruct - 권장

    @Postconstruct자바의 표준 공통 애노테이션이므로 스플이 콜백 인터페이스를 사용하는 것보다 상대적으로 부담이 적으면서, 코드에서 초기화 메소드가 존재한다는 사실을 쉽게 파악할 수 있으므로 XML의 init-method보다 직관적이다.

     

    @Bean(init-method)

    @Bean 메소드를 이용해 빈을 정의하는 경우 @Bean 애노테이션의 init-method를 사용해서 초기화 메소드를 지정 가능하다. init-method와 같다고 볼수 있다.

    @Bean(init-method="initResouce")
    public TestService1 testService1(TestService2 service) {
    	return new TestService1(service);
    }

     


     

    제거 메소드(destruction method)

    제거 메소드는 컨테이너가 종료될 때 호출되서 빈이 사용한 리소스를 반환하거나 종료전에 처리해야할 작업을 수행

    제거 콜백 인터페이스

    DisposableBean 인터페이스를 구현해서 destory()를 구현하는 방법

     

    destory-method

    <bean>태그에 destory-method를 넣어서 제거 메소드 지정

     

    @PreDestory

    종료될 때 실행될 메소드에 @PreDestory

     

    @Bean(destory-method)

     

     

     

     

    출처

    토비의 스프링

     

     

     

     

     

     

    출처 : https://javaslave.tistory.com/48

    반응형
Designed by Tistory.