본문 바로가기
반응형
Spring

[Spring] 스프링 핵심 원리 - 기본편 > 섹션 8. 빈 생명주기 콜백

by brightGarden02 2024. 4. 12.

인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] 섹션8. 빈 생명주기 콜백에 대한 요점 정리를 하였다.

 

목차

1.스프링 빈 이벤트 라이프 사이클

2.빈 생명주기 콜백 3가지 방법

 


1.스프링 빈 이벤트 라이프 사이클

스프링 빈의 이벤트 라이프 사이클은 다음과 같다.

스프링 컨테이너 생성 -> 스프링 빈 생성 ->

의존관계 주입 ->

초기화 콜백 -> 사용 -> 소멸전 콜백 ->

스프링 종료

 

 

데이터베이스 커넥션 풀이나, 네트워크 소켓의 경우, 애플리케이션 시작 시점에 필요한 연결을 하고 애플리케이션 종료 시점에 종료하는 작업이 필요하다.

이를 위해 객체의 초기화와 종료 작업인 빈 생명주기 콜백 3가지에 대해 알아보려한다.

 


2.빈 생명주기 콜백 3가지 방법

 

2-1. 인터페이스 InitializingBean, DisposableBean

인터페이스 InitializingBean, DisposableBean을 구현한다.

단점: 스프링 전용 인터페이스에 의존한다.

초기화, 소멸 메서드의 이름 변경이 불가하다.

코드를 고칠 수 없는 외부 라이브러리에 적용 불가하다.

더 나은 방법이 있기에 사용하지 않는다.

 

 

 

2-2. 빈 등록 초기화, 소멸 메서드 지정

@Bean(initMethod = "init", destroyMethod = "close")처럼 초기화, 소멸 메서드 지정이 가능하다.

@Configuration
static class LifeCycleConfig {

    @Bean(initMethod = "init", destroyMethod = "close")
    public NetworkClient networkClient() {
        NetworkClient networkClient = new NetworkClient();
        networkClient.setUrl("http://hello-spring.dev");
        return networkClient;
    }
}

메서드 이름을 자유롭게 지정 가능하다

스프링 빈이 스프링 코드에 의존하지 않는다.

설정 정보를 사용하기에 코드를 고칠 수 없는 외부 라이브러링도 초기화, 종료 메서드 적용 가능하다.

 

 

 

2-3. 어노테이션 @PostConstruct, @PreDestroy

public class NetworkClient {
	...
    
    @PostConstruct
    public void init(){
        System.out.println("NetworkClient.init");
        connect();
        call("초기화 연결 메시지");
    }

    @PreDestroy
    public void close(){
        System.out.println("NetworkClient.close");
        disconnect();
    }
}

스프링에서 가장 권장하는 방법이다.

어노테이션만 붙이면 되기에 편리하다.

컴포넌트 스캔과 잘 어울린다.

외부 라이브러리에 적용이 안되는 단점이 있다. 외부 라이브러리를 초기화 ,종료해야할 경우, @Bean을 적용하는 방법을 사용하자.

 

 

 

참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편 | 김영한 - 인프런

김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보

www.inflearn.com

 

댓글


반응형
반응형