컨테이너 생성 -> 스프링 빈 생성 -> DI -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료
- 기존에는 생성자와 초기화를 따로 구분하지 않았음
- 하지만 단일 책임 원칙을 따르기 위해서는 생성자 역할과 초기화 역할을 구분하는게 바람직 함
- 유지보수 관점에서도 좋음
빈 생성, 의존관계 주입 후 호출
빈 소멸 직전에 호출
설정 정보에 initMethod="초기화 메서드 이름", destroyMethod="소멸 메서드 이름"을 지정
외부 라이브러리에도 초기화 메서드와 소멸 메서드를 지정할 수 있음
destroyMethod를 지정해주지 않아도 기본값으로 (inferred)(추론)으로 등록되어 있어 close나 shutdown이라는 이름을 가진 메서드를 자동으로 호출해줌
빈으로 등록된 객체에 @PostConstruct(초기화), @PreDestroy(소멸 콜백)사용
- 가장 권장하는 방법
자바 표준 기술로서 스프링이 아닌 다른 컨테이너에서도 동작