스프링 빈 설정 메타 정보 - BeanDefinition

스프링 컨테이너는 BeanDefinition에만 의존한다!

역할과 구현을 분리하고, 역할(인터페이스)에 의존하는 것을 따른다!

factoryBeanName=appConfig; factoryMethodName=memberService;

=>appConfig에 있는 memberService를 호출해서 실제 빈을 생성할 수 있다는 의미이다!

이러한 메타정보를 기반으로 인스턴스를 생성할 수 있다!

BeanDefinition 정보

  • BeanClassName : 생성할 빈의 클래스명(자바 설정처럼 팩토리 역할의 빈을 사용하면 없음)

  • factoryBeanName : 팩토리 역할의 빈을 사용할 경우 ex)appConfig

  • factoryMethodName : 빈을 생성할 팩토리 메서드 지정 ex)memberService(), memberRepository()..등의 메서드들을 통해 제공. 외부에서 메서드를 호출해서 생성되는 방식.

  • Scope : 싱글톤(기본값)

  • lazyInit : 스프링 컨테이너를 생성할 때 빈을 생성하는 것이 아니라, 실제 빈을 사용할 때까지 최대한 생성을 지연처리하는지 여부

  • InitMethodName : 빈을 생성하고 의존관계를 적용한 뒤에 호출되는 초기화 메서드 명

  • DestroyMethodName : 빈의 생명주기가 끝나서 제거하기 직전에 호출되는 메서드 명

  • Constructor argument, Propeerties : 의존관계 주입에서 사용한다.(자바 설정처럼 팩토리역할의 빈을 사용하면 없음!)

스프링에 빈을 등록하는 방법

  1. xml처럼 직접 스프링 빈에 등록하는 방법 // =factoryBeanName ex)appConfig

  2. factoryMethodName : 빈을 생성할 팩토리 메서드 지정. factory method를 이용하는 방법( AppConfig.java) memberService(), memberRepository(),..등의 메서드들을 통해 제공. 외부에서 메서드를 호출해서 생성되는 방식.

Last updated