본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 8. 빈 생명주기 콜백] 빈 등록 초기화, 소멸 메서드 / 인프런 김영한 스프링 핵심 원리 기본편

by easpop 2023. 9. 6.
728x90
반응형

이번 시간에는 빈을 등록하는 시점에 초기화인지, 소멸인지 지정해주는 방법에 대해서 알아보았다.

 

방법은 간단하다.

설정 정보에 @Bean(initMethod = "init", destroyMethod = "close") 처럼 초기화, 소멸 메서드를 지정할 수 있다.

 

init과 close 메소드를 위와 같이 작성해준다.

반응형

그리고 맨 처음에 언급한 것과 같이, @Bean(initMethod = "init", destroyMethod = "close") 을 추가하여

초기화, 소멸 메소드를 지정해준다.

 

테스트를 돌려보면, init과 close가 정상적으로 호출된 것을 볼 수 있다.

 

설정 정보 사용의 특징을 살펴보면,

- 메서드 이름을 자유롭게 줄 수 있다.

- 스프링 빈이 스프링 코드에 의존하지 않는다.

- 가장 큰 장점으로는, 코드가 아니라 설정 정보를 사용하기 때문에 코드를 고칠 수 없는 외부 라이브러리에도 초기화, 종료 메소드를 적용할 수 있다.

 

@Bean의 destroyMethod 속성에는 특별한 기능이 있는데, 라이브러리는 대부분 close나 shutdown 이라는 종료 메소드를 사용한다.

그래서 @Bean의 destroyMethod는 기본값이 추론한다는 뜻의 '(inferred)' 로 등록되어 있다.

이 추론 기능은 close, shutdown 이라는 이름의 메소드를 자동으로 호출해준다.

이름 그대로 종료 메소드를 추론해서 호출해준다.

따라서 직접 스프링 빈으로 등록하면 종료 메소드는 따로 적어주지 않아도 잘 동작한다. (대부분 close나 shutdown으로 되어있기 때문ㅋㅋㅋ)

반대로, 추론 기능을 사용하기 싫다면 destoryMethod="" 와 같이 빈 공백으로 지정하면 된다.

728x90
반응형

댓글