스프링 프레임워크 5 입문 (4) - 빈 객체 생성과 생명 주기

김민영·2023년 6월 19일
0
post-thumbnail

Spring Bean 객체 생성

BeanCreate 프로젝트

  • Spring 에서 Bean 객체를 bean configuration file (beans.xml)에 정의를 하고 필요할 때 객체를 가져와 사용하는 방법을 이용
  • bean 태그 : 사용할 Bean을 정의하는 태그

bean 태그 기본 속성

  • class : 객체 생성에 사용할 클래스 지정 (필수)
  • id : Bean 객체 가져오기 위해 사용하는 이름 지정
  • lazy-init : 싱글톤인 경우, xml 을 로딩할 때 객체 생성 여부를 설정.
    • true : xml 로딩 시 객체를 생성하지 않고, 객체를 가져올 때 생성
  • scope : 객체 범위 설정
    • singleton : 객체를 하나만 생성해서 사용. 객체를 여러 번 생성해도 동일한 주소값 가져옴
    • prototype : 객체를 가져올 때마다 객체를 생성. 객체마다 다른 주소값 가져옴

빈 객체의 생명 주기

BeanLifeCycle 프로젝트

  • Spring의 Bean 객체 생성
    • Singleton : xml 파일 로딩 시 객체 생성
    • Singleton 이고 lazy-init=true : getBean 메서드 사용시 객체 생성
    • prototype : getBean 메서드 사용 시 객체 생성
  • Spring의 Bean 객체 소멸
    • IoC 컨테이너 종료 시 객체 소멸 (ctx.close())

객체 생성과 소멸 시 호출될 메서드 등록

beans.xml 작성시 태그로 지정
객체 생성, 소멸 시 호출될 메서드 지정 가능.

  • init-method : 생성시 메서드 지정
  • destroy-method : 소멸시 메서드 지정
  • default-init-method : init-method 설정하지 않은 경우 호출
  • default-destroy-method : destroy-method 설정하지 않은 경우 호출

여러 개 설정된 경우

  • default 말고 init, destroy가 호출

에러

  • 아무 method를 설정하지 않은 경우
    • default 메소드가 없어도 오류 나지 않음.
    • init, destroy 메소드가 없으면 오류 발생.

BeanPostProcessor

BeanPostProcessor 프로젝트
init-method 지정된 메소드가 호출되기 전, 후에 다른 메서드를 호출할 수 있음.

  • Bean 객체 정의 시, init-method 속성을 설정하면 객체가 생성될 때 자동으로 호출될 메서드를 지정할 수 있음.
  • BeanPostProcessor 인터페이스를 구현한 클래스를 정의하면, Bean 객체 생성 시 호출될 init 메서드를 가로채 다른 메서드를 호출할 수 있음.
  • postProcessBeforeInitialization : init-method 에 지정된 메소드 호출 전에 호출
  • postProcessAfterInitialization : init-method 에 지정된 메소드 호출 후에 호출
  • init-method 지정되지 않았어도 자동으로 호출
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글