스프링 빈 설정 메타 정보 - BeanDefinition
스프링 컨테이너는 BeanDefinition에만 의존한다!
역할과 구현을 분리하고, 역할(인터페이스)에 의존하는 것을 따른다!
factoryBeanName=appConfig; factoryMethodName=memberService;
=>appConfig에 있는 memberService를 호출해서 실제 빈을 생성할 수 있다는 의미이다!
이러한 메타정보를 기반으로 인스턴스를 생성할 수 있다!
BeanDefinition 정보
BeanClassName : 생성할 빈의 클래스명(자바 설정처럼 팩토리 역할의 빈을 사용하면 없음)
factoryBeanName : 팩토리 역할의 빈을 사용할 경우 ex)appConfig
factoryMethodName : 빈을 생성할 팩토리 메서드 지정 ex)memberService(), memberRepository()..등의 메서드들을 통해 제공. 외부에서 메서드를 호출해서 생성되는 방식.
Scope : 싱글톤(기본값)
lazyInit : 스프링 컨테이너를 생성할 때 빈을 생성하는 것이 아니라, 실제 빈을 사용할 때까지 최대한 생성을 지연처리하는지 여부
InitMethodName : 빈을 생성하고 의존관계를 적용한 뒤에 호출되는 초기화 메서드 명
DestroyMethodName : 빈의 생명주기가 끝나서 제거하기 직전에 호출되는 메서드 명
Constructor argument, Propeerties : 의존관계 주입에서 사용한다.(자바 설정처럼 팩토리역할의 빈을 사용하면 없음!)
스프링에 빈을 등록하는 방법
xml처럼 직접 스프링 빈에 등록하는 방법 // =factoryBeanName ex)appConfig
factoryMethodName : 빈을 생성할 팩토리 메서드 지정. factory method를 이용하는 방법( AppConfig.java) memberService(), memberRepository(),..등의 메서드들을 통해 제공. 외부에서 메서드를 호출해서 생성되는 방식.
Last updated