본문 바로가기
FrameWork/Spring

Spring은 어떻게 다양한 설정 형식을 지원할까?BeanDefinition

by titlejjk 2023. 7. 13.

Spring은 어떻게 다양한 설정 형식을 지원할까?

바로 BeanDefinition이라는 추상화 때문에 다행이다.

역할과 구현을 개념적으로 나누어서 가능하다.

 

https://www.developer-tm.com/07/10/2017/spring-bean/

BeanDefinition은 속성 값, 생성자 인수 값 및 구체적인 구현에서 제공하는 추가 정보가 있는 빈 인스턴스를 말한다.

BeanDefinition은 추상화이기 때문에 최소한의 인터페이스 이며 BeanFactoryPostProcessor속성 값과 기타 빈 메타데이터를 검사하고 수정할 수 있도록 하는 것이다.

 

BeanDefinition에는 많은 옵션들이 있다.

IoC Container의 BeanDefinition이 등록될 때 꼭 필요한 것은 beanClassName이다.

어떤 코드인지 어떤 구성으로 되어있는지 보다는 Spring Container는 오직 BeanDefinition의 beanClassName만 알면된다.

그렇기 때문에 BeanDefinition을 빈 설정 메타정보라 칭하며 보통 @Bean, <bean>등등 각각 하나씩 메타 정보가 생성된다.

 

그리고 Spirng Container는 이렇게 읽어들인 메타정보를 기반으로 SpringBean을 생성한다.

 

 

beanClassName을 통해 무엇을 반환하는지 확인도 가능하다.

BeanDefinition의 Method

getScope 해당 bean에 대한 현재 대상 범위의 이름을 반환(null포함)
 setBeanClassName Bean정의의 Bean Class이름을 지정한다.
getBeanClassName 해당 bean의 클래스 이름을 반환한다.
자식 class인 경우 사용되는 실제 클래스 이름을 사용할 필요는 없으며, 조회용으로만 사용하는 것이 좋다.
setScope Bean의 대상 범위를 지정할 수 있다.
getScope 해당 Bean에 현재 대상 범위의 이름을 반환한다.(null포함)
setLazyInit boolean Type으로해당 Bean을 느리게 초기화할지 여부를 설정한다.
false일경우 시작시 싱글톤의 빈 팩토리에 의해 인스턴스화 된다.
isLazyint boolean Type으로 bean이 느리게 초기화 되어야 하는지 여부를 반환한다. 그로인해 동작시 바로 인스턴스화가 되지 않는다. 싱글톤 빈에만 적용가능하다.
getDependsOn 해당 bean이 의존하고 있는 bean의 이름을 반환한다.
isPrimary boolean Type으로 해당 bean이 기본 autowire인지 여부를 반환한다.
getFactoryBeanName FactoryBeanName이 존재한다면 이름을 반환한다.
getFactoryMethodName FactoryMethodName, 메서드는 지정된 팩토리 빈이 있는 경우 호출 되거나 그렇지 않다면 bean 클래스의 정적 메서드가 호출된다.
Contructor arguments, Properties 의존관계 주입에사용
DestroyMethodName 빈의 생명주기가 끝나서 제거하기 직전에 호출되는 메서드
InitMethodName 빈을 생성하고, 의존관계를 적용한 뒤에 호출되는 초기화 메서드

 

'FrameWork > Spring' 카테고리의 다른 글

웹 애플리케이션과 싱글톤  (0) 2023.07.19
@RequiredArgsConstructor  (0) 2023.07.16
JPA (작성중)  (0) 2023.07.12
Spring Framework에 대해 정리해보기  (1) 2023.07.11
관심사 분리  (0) 2023.07.10

댓글