일반적으로 컴포넌트 클래스들에 @Component를 붙일 수 있지만, @Repository, @Service, @Controller를 붙인다면
도구들이 클래스들을 처리하는데 더 적합하도록 할 수 있고 관점(aspects)에 더 연관성을 부여할 수 있다
빈(Bean) 설정 파일에 직접 빈을 등록
public class ViewrainService implements InitializingBean, DisposableBean{
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("bean 생성 및 초기화 : afterPropertiesSet() 호출됨");
}
@Override
public void destroy() throws Exception {
System.out.println("bean 생성 소멸 : destroy 호출됨");
}
// 중략...
}
<bean id="BBean" class="com.example.viewraintoy.service.ViewrainService"
init-method="init" destroy-method="destroy"/>
@PostConstruct
public void init() {
System.out.println("======================================");
System.out.println("bean 생성 및 초기화 : init() 호출됨");
System.out.println("======================================");
}
@PreDestroy
public void destroy() {
System.out.println("======================================");
System.out.println("bean 생성 소멸 : destroy 호출됨");
System.out.println("======================================");
}
스코프 종류 | 설명 |
---|---|
singleton | 기본 싱클톤 스코프 |
prototype | 어플리케이션에서 요청시(getBean()) 마다 스프링이 새 인스턴스를 생성 |
requset | HTTP 요청별로 인스턴스화 되면 요청이 끝나면 소멸(spring mvc webapplication 용도) |
session | HTTP 세션별로 인스턴스화 되면 세션잉 끝나며 소멸(spring mvc webapplication 용도) |
global session | 포틀릿 기반의 웹 어플리케이션용도, 전역 세션 스코프의 빈은 같은 스프링 MVC를 사용한 포탈어플리케이션 내의 모든 포틀릿 사이에서 공유 할 수 있다. |
thread | 새 스레드에서 요청하면 새로운 bean 인스턴스를 생성, 같은 스레드에 대해서는 항상같은 bean 인스턴스가 반환 |
custom | org.pringframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용 |