스프링 컨테이너는 빈 객체의 라이프 사이클을 관리함.
new AnnotationConfigApplicationContext(Appctx.class)와 같이 스프링 컨테이너를 초기화하면 인자로 전달된 설정 클래스 파일을 읽고 빈객체를 생성,의존 주입,초기화의 과정을 완료한다.
객체 생성 -> 의존 설정 -> 초기화 -> 소멸
빈 객체 초기화,소멸 담당 스프링 인터페이스
org.springframework.beans.factory.InitializingBean의 afterProperties()
빈 객체 생성 후 초기화 과정 필요하면 InitializingBean 상속해서 해당 메서드 구현하면 됨
org.springframework.beans.factory.DisposableBean의 destroy()
소멸 과정 필요하면 위의 메소드 구현하면 됨.
이런 초기화, 소멸 필요한 경우 DB connection, 채팅 등등
제공받은 외부 클래스를 빈객체로 설정할 경우 소스코드 없으면 초기화 or 소멸 구현 못함.
이 때는 클래스 내부에 제공한 메서드를 @Bean의 initMethod,destryMethod 속성에 지정하면 됨
별도 설정 하지 않으면 빈은 싱글톤 범위를 갖음.
설정을 통해 프로토타입 범위의 빈을 설정 할 수 있음. @Scope("prototype")
프로토타입 범위의 빈은 완전한 라이프사이클을 따르지 않음
빈 객체의 소멸 처리를 코드에서 직접 해야함.