앞서 살펴본 내용과 같다. 스프링 컨테이너를 생성 할 때 설정 경로를 같이 넣어 주면 생성과 설정을 동시에 할 수 있다.
설정을 따로 할시에는 ctx.refresh(); 를 꼭 해야한다.
이제 빈의 생명 주기에 대해서 알아보겠다. 빈을 생성하고 종료할 때 어떤 작업을 하고 싶다면 이렇게 사용하면 된다.
첫 번째는 implements를 이용한 방법이다. 처음 클래스를 만들 때 afterPropertiesSet과 destroy를 implement 한다. 그런 후 자신이 원하는 것을 밑에 기재한다.
두 번째 방법은 어노테이션을 이용한 방법이다. implement 하지않고 @PostConstruct 와 @PreDestroy를 어노테이션해서 간단히 쓰면 된다.
=====================================================================================================================
다음은 스프링 빈 범위(scope) 에 대해서 알아보자
Spring에서는 Bean관리는 기본적으로 싱글톤으로 관리를 한다
하지만 필요에 따라 싱글톤이 아닌 경우가 필요한데, 이를 위해 scope를 이용한다
scope종류는 다음과 같다
1. singleton : 기본 싱글톤 스코프
2. prototype : 어플리케이션에서 요청시 (getBean()) 마다 스프링이 새 인스턴스를 생성
3. request : HTTP 요청별로 인스턴스화 되며 요청이 끝나면 소멸 (spring mvc webapplication 용도)
4. session : HTTP 세션별로 인스턴스화되며 세션이 끝나며 소멸 (spring mvc webapplication 용도)
5. global session : 포틀릿 기반의 웹 어플리케이션 용도. 전역 세션 스코프의 빈은 같은 스프링 MVC를 사용한 포탈 어플리케이션 내의 모든 포틀릿 사이에서 공유할 수 있다
6. thread : 새 스레드에서 요청하면 새로운 bean 인스턴스를 생성, 같은 스레드에 대해서는 항상 같은 bean 인스턴스가 반환
7. custom : org.pringframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용
단, request, session, global session의 스코프는 일반 spring 어플리케이션이 아닌, Spring MVC Web Application에서만 사용되는 용도
scope를 정의하는 방법은 두가지가 있다.
1. XML 사용
<bean id="~~" class="~~" scope="singleton"/>
2. Annotation 사용
@Scope("singleton")
public class A{
}