스프링 기본 - 섹션8. 빈 생명주기 콜백

2023. 7. 6. 00:07·CS/김영한 스프링 강의

 

일단 이게 뭐냐면, 스프링 빈의 라이플사이클은

스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료

이다.

 

객체에서 생성자와 초기화를 분리하는게 좋은데, 생성은 메모리에 공간 확보해서 생성하는 책임이 있고, 초기화는 외부 커넥션 등 무거운 책임을 가진다. 그래서 객체 생성 부분과 초기화 부분을 나누는게 더 좋다고 한다. 그래서 밑에 예제 보면 생성하고 set은 나중에 함.

 

결론은 그냥 @PostConstruct, @PreDestroy 써라. 유일한 단점은 외부 라이브러리에는 적용하지 못한다고 해서 이럴땐 @Bean에서 초기화 함수, 소멸 함수 정하는거 쓰자.

 

 

 

 

 

 

public class NetworkClient implements InitializingBean, DisposableBean {

    private String url;

    public NetworkClient() {
        System.out.println("생성자 호출, url = " + url);
//        connect();
//        call("초기화 연결 메시지");
    }

    public void setUrl(String url) {
        this.url = url;
    }

    // 서비스 시작 시 호출
    public void connect() {
        System.out.println("connect: " + url);
    }

    public void call(String message) {
        System.out.println("call: " + url + " message = " + message);
    }

    // 서비스 종료 시 호출
    public void disconnect() {
        System.out.println("close: " + url);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("NetworkClient.afterPropertiesSet()");
        connect();
        call("초기화 연결 메시지");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("NetworkClient.destroy()");
        disconnect();
    }
}

 

 

 

이 이름 정해서 하는 것의 대단함은 destroyMethod를 정하지 않으면 많은 라이브러리에서 닫는 함수를 'close', 'destroy', 'disconnect'같은걸 쓰니 이것들을 추론해서 시도해 본다는 것.

 

 

'CS > 김영한 스프링 강의' 카테고리의 다른 글

HTTP 웹 기본 지식 - ~ 섹션5. HTTP 메서드 활용  (0) 2023.07.09
스프링 기본 - 섹션9. 빈 스코프  (0) 2023.07.06
스프링 기본 - 섹션7. 의존관계 자동 주입  (0) 2023.07.05
스프링 기본 - 섹션6. 컴포넌트 스캔  (0) 2023.07.03
스프링 기본 - 섹션5. 싱글톤 컨테이너  (0) 2023.07.03
'CS/김영한 스프링 강의' 카테고리의 다른 글
  • HTTP 웹 기본 지식 - ~ 섹션5. HTTP 메서드 활용
  • 스프링 기본 - 섹션9. 빈 스코프
  • 스프링 기본 - 섹션7. 의존관계 자동 주입
  • 스프링 기본 - 섹션6. 컴포넌트 스캔
용나리
용나리
  • 용나리
    티스토리 블로그
    용나리
  • 전체
    오늘
    어제
    • 분류 전체보기 (333)
      • 과거의 것들 (93)
        • AI Tech boostcamp (92)
      • 생각정리(고찰) (2)
      • 기술 글 (0)
      • 코딩테스트 (4)
        • C++ (0)
        • Python (4)
      • CS (121)
        • 컴퓨터 시스템 (4)
        • 코틀린 인 액션 (13)
        • 김영한 스프링 강의 (104)
      • 일지 남기기용 (11)
        • 운동 (10)
      • 개발 배포 해보기 (1)
      • 프로그래밍 언어 및 기타 (32)
        • Spring Boot (9)
        • Python (9)
        • Kotlin (1)
        • Flutter (2)
        • SQL (4)
        • Docker (3)
        • 공통 (4)
      • os (4)
        • Linux (4)
      • 기술 (17)
        • PyTorch (6)
        • Computer Vision (6)
        • NLP (1)
        • 기타 (4)
      • 제품 후기 (0)
      • 게임 (0)
        • Human Resource Machine (0)
      • 강의 (26)
        • fullstackdeeplearning_sprin.. (9)
        • 부캠 안드로이드 학습정리 (17)
      • 개인 메모 (10)
      • IT 기타 (5)
      • 논문 읽기 연습 (5)
        • Computer Vision (1)
        • NLP (0)
        • 공통 (2)
        • 그냥 메모 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pip install killed
    파이썬 실행경로
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
용나리
스프링 기본 - 섹션8. 빈 생명주기 콜백
상단으로

티스토리툴바