반응형
초기화 메소드(initialization method)
초기화 메소드(initialization method)는 빈 오브젝트가 생성되고 DI 작업까지 마친 다음에 실행되는 메소드를 말한다.
오브젝트의 기본적인 초기화 작업은 생성자에서 진행하면 된다.
하지만 DI를 통해 모든 프로퍼티가 주입된 후에야 가능한 작업도 있다. 이런 경우 사용할 수 있는것이 초기화 메소드다.
초기화 메소드를 지정하는 방법은 네 가지가 있다.
1. 초기화 콜백 인터페이스
InitializingBean 인터페이스를 구현해서 빈을 작성하는 방법이다.
InitializingBean의 afterPropertiesSet() 메소드는 이름 그대로 프로퍼티 설정까지 마친 뒤에 호출된다.
하지만 권장되지 않는다. 빈 코드에 스프링 인터페이스를 노출하기 때문이다.(또 다른 방법이 더 간결하기 때문)
2. init-method 지정
XML을 이용해서 bean을 등록하면 <bean> 태그에 init-method 애트리뷰트를 넣어서 초기화 작업을 수행할 메소드 이름을 지정할 수 있다.
<bean id="myBean" class="MyBean" init-method="initResource"/>
DI 작업까지 마친 뒤에 initResource() 메소드가 실행되도록 선언한 것
스프링 API가 노출되지 않기 때문에 깔끔하다는 장점이 있지만, 코드만 보고는 초기화 메소드가 호출될지 알 수가 없다.
3. @Postconstruct
@PosrConsturct 자바의 표준 공통 애노테이션이므로 스프링 콜백 인터페이스를 사용하는 것보다 상대적으로 부담이 적으면서, 코드에서 초기화 메소드가 존재한다는 사실을 쉽게 파악할 수 있으므로 XML의 init-method보다 직관적이다.) 권장한다.
4. @Bean(init-method)
@Bean 메소드를 이용해 빈을 정의하는 경우 @Bean 애노테이션의 init-method 엘리먼트를 사용해서 초기화 메소드를 지정할 수 있다. <bean init-method>와 동일하다고 보면된다.
@Bean(init-method="initResource")
public void MyBean myBean()
제거 메소드(destruction method)
제거 메소드(destruction method)는 컨테이너가 종료될 때 호출돼서 빈이 사용한 리소스를 반환하거나 종료 전에 처리해야 할 작업을 수행한다.
1. 제거 콜백 인터페이스
DisposableBean 인터페이스를 구현해서 destory()를 구현하는 방법
2. destroy-method
<bean> 태그에 destroy-method를 넣어서 제거 메소드 지정
3. @PreDestory
종료될 때 실행될 메소드에 @PreDestroy
4. @Bean(destroy-method)
(출처 : 토비의 스프링)
반응형
'프로그래밍 노트 > SPRING' 카테고리의 다른 글
[Spring] junit을 활용한 스프링 테스트 (0) | 2018.09.21 |
---|---|
[Spring] 팩토리빈과 팩토리메소드 (0) | 2018.09.09 |
[Spring] 컨테이너가 자동등록하는 빈 (0) | 2018.09.07 |
[Spring] 프로퍼티(properties) 다루기 (0) | 2018.09.07 |
[Spring] IoC(InversionOfControl) 컨테이너 6 (빈 등록 메타정보 구성 전략) (0) | 2018.08.28 |