스프링 빈의 생명주기 관리
빈이 생성되거나 소멸되는 경우 특정한 작업을 하고싶은 경우가 있습니다.
하나의 예시로는 빈이 생성될 때 데이터베이스 커넥션 풀을 미리 생성하는 경우가 있습니다.
스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종료
- 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출
- 소멸전 콜백: 빈이 소멸되기 직전에 호출
스프링 빈은 크게 3가지 방법으로 빈 생명주기 콜백을 지원
- 인터페이스 (InitializingBean, DisposableBean)
- 설정정보 초기화 메서드, 종료 메서드 지정
- @PostConstruct, @PreDestroy
@PostConstruct
주석은 다음 이후에 호출되어야 하는 메서드를 나타내는 데 사용됩니다. bean이 구성되었고 모든 종속성이 주입되었습니다. 이 메소드는 Bean에 대한 사용자 정의 초기화 논리를 수행하는 데 사용할 수 있습니다.
@PreDestroy
주석은 Bean이 소멸되기 전에 호출해야 하는 메소드를 나타내는 데 사용됩니다. 이 메서드는 빈에 대한 사용자 지정 정리 또는 종료 논리를 수행하는 데 사용할 수 있습니다.
@Component
class SomeClass{
private com.cho.Spring.Framework.Bean.SomeDependency someDependency;
public SomeClass(com.cho.Spring.Framework.Bean.SomeDependency someDependency) {
super();
this.someDependency = someDependency;
System.out.println("All dependency are ready!");
}
@PostConstruct//의존성 주입이 완료되어 초기호가 수행된 후 실행되어야 하는 메소드에서 사용
public void initalize(){
someDependency.getReady();
}
@PreDestroy// 인스턴스가 컨테이너에 의해 제거 되고 있다는 신호에대한 콜백 알림
public void cleanup() {
System.out.println("Cleanup");
}
}
@Component
class SomeDependency{
public void getReady(){
System.out.println("Some logic using SomeDependency");
}
}
'Spring > Spring Framework' 카테고리의 다른 글
스프링 시큐리티 (회원가입+ 로그인 /로그아웃) (0) | 2023.03.04 |
---|---|
스프링 프레임워크 스테리오타입 어노테이션 (0) | 2023.02.27 |
스프링 프레임워크 중요한 용어 (0) | 2023.02.27 |
의존성주입 (0) | 2023.02.27 |
@Controller와 @RestController +@GetMapping (0) | 2023.02.19 |