스프링 컨테이너와 메타정보 조회

annmj·2021년 11월 23일
0

BeanFactory (인터페이스)


  • 스프링 컨테이너의 최상위 인터페이스
  • 스프링 빈을 관리하고 조회하는 역할을 담당



ApplicationContext (인터페이스)


  • BeanFactory 의 기능을 모두 상속받아 제공한다.
  • 빈은 관리, 조회하는 기능은 물론 + 수 많은 부가기능이 필요하다.
  • 주로, 우리는 부가기능이 포함된 ApplicationContext 를 사용한다.
  • BeanFactory 나 ApplicationContext 를 스프링 컨테이너 라고 한다.



일부 부가기능 참고 내용







xml 로 빈 설정하기


ApplicationContext 를 구현하여 config 를 읽는 다양한 방법들

  • 그 중에서 XML 을 사용하는 방법에 대해 알아보자.

요즘에는 스프링 부트를 도입하면서 거의 볼 수 없는데, 레거시 코드들은 xml 로 된 경우가 있으니 아래 코드를 참고해서 어느정도 이해할 수 있는 수준을 만들어 놓자.

관련하여 테스트를 해보면 다음과 같다. GenericXmlApplicationContext 를 사용한다는 점을 확인하자.


테스트 결과는 아래와 같이 나오게 된다. bean 이 성공적으로 만들어 짐을 알 수 있었다.








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


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

  • @Bean 하나당 하나씩 메타 정보가 생성된다.

    • 참고1 (메타정보가 생성되는 메커니즘)




    • 참고2 (메타정보안에 담긴 정보들)








테스트를 해보자. Role 이 ROLE_APPLICAION 에 해당하는 경우의 메타 정보만 확인해보는 코드이다.




테스트 결과는 다음과 같다.

참고)

xml로 config를 읽는 방식에서의 출력은 class 가 노출이 되어있는 직접 선언 방식 이고,
java 파일로 config 를 읽는 방식(현재 테스트한 방식)에서의 출력은 class 가 null 이 되고, factoryBeanName, factoryMethodName 에 클래스 명들이 노출되어 있다.


profile
차근차근

0개의 댓글