IoC Container
or Spring Container
라고도 불린다.
일종의 빈 팩토리이다.
관리할 모든 오브젝트에 대한 생성과 관계설정을 담당한다.
직접 오브젝트를 생성하고 관계를 맺어주는 코드가 없고, 그런 생성정보와 연관관계 정보를 별도의 설정정보를 통해 얻는다.
클래스를 설정 정보로 등록해두고 @Bean
이 붙은 메소드의 이름을 가져와 빈 목록을 만든다.
클라이언트가 getBean()
메소드를 호출하면 자신의 빈 목록에서 요청한 이름이 있는지 찾는다.
있다면 빈을 생성하는 메소드를 호출해서 오브젝트를 생성시킨 후 클라이언트에 돌려준다.
오브젝트 팩토리가 아무리 많아져도 이를 알아야 하거나 직접 사용할 필요가 없다.
일관된 방식으로 원하는 오브젝트를 가져올 수 있다.
자바 코드를 작성하는 대신 XML처럼 단순한 방법을 사용해 IoC 설정정보를 만들 수 있다.
오브젝트가 만들어지는 방식, 시점, 전략을 다르게 가져갈 수 있다.
자동생성, 오브젝트에 대한 후처리, 정보의 조합, 설정 방식의 다변화, 인터셉팅 등 오브젝트를 효과적으로 활용할 수 있는 다양한 기능을 제공한다.
빈이 사용할 수 있는 기반기술 서비스나 외부 시스템과의 연동 등을 컨테이너 차원에서 제공한다.
getBean()
메소드는 빈의 이름을 이용해 빈을 찾아준다.
타입만으로 빈을 검색하거나 특별한 애노테이션 설정이 되어있는 빈을 찾을 수 있다.
출처) 토비의 스프링 3.1