1.5.1 오브젝트 팩토리를 이용한 스프링 IoC
애플리케이션 컨텍스트와 설정정보
빈(bean)
- 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트
- 즉, 이전에 DaoFactory를 통해 만들어진 UserDao와 같은 오브젝트들이 빈이라고 보면된다
- 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용등을 제어해주는 제어의 역전이 적용된 오브젝트
빈 팩토리
- 위와 같은 스프링 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리라고 부름
- 사실 이보다 더 확장된 애플리케이션 컨텍스트를 사용함
애플리케이션 컨텍스트
- 별도의 정보를 참고해서 빈의생성, 관계설정등의 제어작업을 총괄함
- 기존 DaoFactory에서는 설정정보, 클래스의 오브젝트를 생성하고 연결하는 정보 등이 자바코드로 만들어져 있음
- 애플리케이션 컨텍스트는 별도로 설정 정보를 담고있는 것을 가져와 이를 활용하는 IoC 엔진임
- 우리가 만든 DaoFactory도 조금만 손보면 설정정보로 활용할 수 있음
생성자를 빈으로 등록

- 위와 같이 생성자를 빈으로 등록한다.
- @Configuration 어노테이션을 사용하면, 설정을 담당하는 클래스로 인식한다.
- @Bean으로 등록하면 애플리케이션 컨텍스트에서 객체를 등록하고 어디서든 사용할 수 있다.

- new AnnotationConfigApplicationContext는 어노테이션을 통해 설정정보를 전달하는 경우에 사용한다.
- 컨텍스트에 등록된 빈 객체는 context.getBean을 통해서 가져올 수 있다.
- 이름을 정하는 이유는 생성하는 방식이나 구성을 다르게 가져갈 수 있기 때문이다.

1.5.2 애플리케이션 컨텍스트의 동작방식
애플리케이션 컨텍스트
- IoC컨테이너 또는 스프링 컨테이너, 빈 팩토리라고 부른다.
- ApplicationContext 인터페이스를 구현한다.
- ApplicationContext는 BeanFactory 인터페이스를 상속했다.