스프링 컨테이너는 BeanDefinition이라는 인터페이스에만 의존된다.
스프링은 다양한 설정 형식을 지원하는데
xml, java, ...
BeanDefinition 이라고 추상화되어있다.
스프링 컨테이너는 자바 코드인지, XML인지 몰라도 됨
오직 BeanDefinition만 알면 된다.
BeanDefinition 이거를 빈 설정 메타정보라 부름
스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다.
스프링에서는 역할과 구현을 개념적으로 나눈 것이다
스프링 자체도 객체지향원칙을 잘지켜서 구현되어있네