Spring BeanDefinition

강정우·2023년 11월 1일
0

Spring-boot

목록 보기
9/73
post-thumbnail

BeanDefinition

  • BeanDefinition 이라는 개념은 Bean을 정의한 것.
    즉, 우리가 앞서 grooby, java, xml로 SpringContainer를 만들 수 있었는데 이는 BeanDefinition이라는 추상화가 있기에 가능했던 것이다.

  • 그래서 우리는 BeanDefinition을 빈 설정 메타 정보라고 한다.
    이말은 @Bean 혹은 <bean>에 각각 하나씩 메타 정보가 생성된다는 것이다.

  • 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다.

BeanDefinition 동작개념

  • AnnotationConfigApplicationContextAnnotatedBeanDefinitionReader를 사용해서 AppConfig.class를 읽고 BeanDefinition을 생성한다.

  • GenericXmlApplicationContextXmlBeanDefinitionReader를 사용해서 appConfig.xml 설정 정보를 읽고 BeanDefinition을 생성한다.

  • 새로운 형식의 설정 정보가 추가되면, XxxBeanDefinitionReader를 만들어서 BeanDefinition을 생성하면 된다.

이는 BeanDefinition을 직접 생성해서 스프링 컨테이너에 등록할 수 있다. => 실무에서 거의 X
스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화 해서 사용하는것으로 이해하면 된다.

  • 참고로 위와같이 작성하면 로그에 factory method라는게 보이는데 이게 바로 java를 시용해서 값을 집어넣는 AppConfig 부분에 들어가는 개념이다.
    외부(spring의 팩토리 메서드 인터페이스같은게)에서 AppConfig의 메서드들을 호출해서 생성되는 방식이다.
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글