-
(스프링 기본) 28 - 빈 등록 초기화, 소멸 메서드 (initMethod, destroyMethod)개발/Spring 2024. 10. 29. 11:33
@Configuration static class LifeCycleConfig { @Bean(initMethod = "init", destroyMethod = "close") public NetworkClient networkClient() { NetworkClient networkClient = new NetworkClient(); networkClient.setUrl("http://hello-spring.dev"); return networkClient; } }
public void init() { System.out.println("NetworkClient.init"); connect(); call("초기화 연결 메세지"); } public void close() { System.out.println("NetworkClient.close"); disconnect(); }
빈 등록 초기화, 소멸 메서드를 등록하고,
빈 등록 시 initMethod 와 destroyMethod 를 사용해서 메서드 이름을 넣어주면
빈 콜백을 잘 받아올 수 있다.
메서드 이름을 자유롭게 가질 수 있으며,
스프링 빈이 스프링 코드에 의존하지 않고,
코드가 아니라 설정 정보를 사용하기 때문에
코드를 고칠 수 없는 외부 라이브러리에도 초기화, 종료 메서드 적용이 가능하다.
String destroyMethod() default "(inferred)";
@Bean 으로 등록 시 나타나는 문제로 destroyMethod 기본값이 inferred 추론으로 등록돼 있다.
라이브러리는 보통 close, shutdown 이름의 종료 메서드를 사용하는데,
이 추론 기능은 close, shutdown 메서드를 자동으로 호출해준다.
즉, 종료 메서드를 추론해서 호출 하는 것이다.
따라서 직접 스프링 빈으로 등록하면 종료 메서드는 따로 적어주지 않아도 잘 동작한다.
destroyMethod = ""
추론 기능 사용하기 싫으면 공백으로 두면 된다.
'개발 > Spring' 카테고리의 다른 글
(스프링 기본) 30 - 빈 스코프 (싱글톤, 프로토 타입 - ObjectProvider, Provider) (0) 2024.10.29 (스프링 기본) 29 - 어노테이션 @PostConstruct, @PreDestroy (0) 2024.10.29 (스프링 기본) 27 - 인터페이스 InitializingBean, DisposableBean (0) 2024.10.29 (스프링 기본) 26 - 빈 생명주기 콜백 (0) 2024.10.29 (스프링 기본) 25 - 의존 관계 등록 올바른 실무 기준 (자동, 수동) (0) 2024.10.28