스프링이 다양한 설정 양식을 지원하는 이유?! → BeanDefinition이라는 추상화가 있네!
역할과 구현을 잘 나눠놨네! 스프링은 빈을 등록해놓는 컨테이너가 xml인지 class인지 모름!

아래의 그림처럼 각 형식의 컨테이너들이 빈들의 설정정보를 읽고 BeanDefinition에 담아서 생성함! 이걸 컨테이너가 관리하는 것임! 약간 reader들이 빈들 읽고 반환한 metadata 생성하면 그걸 갖고 관리하는 느낌.
BeanDefinition에 대해서는 스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것 정도만 이해하자!
가끔 스프링 코드나 스프링 관련 오픈 소스의 코드를 볼 때, BeanDefinition을 직접 생성해서 스프링 컨테이너에 등록하는 것을 볼 수 잇음….
