-
Spring Bean Life CycleSpring/Spring 기본 지식 2020. 3. 15. 21:16반응형
빈 생명주기 메소드
초기화 메소드(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)
출처
토비의 스프링
반응형'Spring > Spring 기본 지식' 카테고리의 다른 글
Spring postgresql mybatis jdbc 기본 연결테스트 (0) 2020.03.23 서블릿 컨테이너와 스프링 컨테이너 (0) 2020.03.19 DI 방법 3가지 (0) 2020.03.12 spring IoC의 용어 정리 (0) 2020.02.11 1. spring 사용 이유 (0) 2020.02.06