1.5 스프링의 IoC
1.5.1 오브젝트 팩토리를 이용한 스프링 IoC
빈 팩토리 : 스프링에서 빈의 생성과 관계설정 같은 제어를 담당하고 있는 IoC 오브젝트를 빈 팩토리라고 부른다. -> 보통은 빈 팩토리 보다는 빈 팩토리를 확장한 어플리케이션 컨텍스트를 주로 사용한다.
스프링에서는 @Configuration @Bean 두가지 애너테이션을 사용해서 어플리케이션 컨텍스트에 빈을 등록할 수 있다.
@Configuration : 스프링이 빈 팩토리를 위한 오브젝트 설정을 담당하는 클래스라고 인식할 수 있도록 한다.
@Bean : 오브젝트 생성을 담당하는 IoC 용 메소드라는 것을 의미한다.
1.5.2 애플리케이션 컨텍스트의 동작방식
어플리케이션 컨텍스트는 @Configuration 이 붙은 설정 클래스를 설정 정보로 등록해두고 @Bean 이 붙은 메소드의 이름을 가져와 빈 목록을 만들어둔다.
클라이언트가 어플리케이션 컨텍스트의 메소드를 호출하면 자신의 빈 목록에서 요청한 이름이 있는지를 착고, 있다면 빈을 생성하는 메서드를 호출해 오브젝트를 생성한 후 클라이언트에게 돌려준다.
어플리케이션 컨텍스트를 사용했을 때 장점은 다음과 같다.
클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다.
어플리케이션을 개발하다 보면 설정 클래스들은 늘어가고, 클라이언트가 필요한 오브젝트를 가져오려면 어떤 팩토리 클래스를 사용해야 할지 알아야 하고, 필요할 때마다 팩토리 클래스를 생성하는 책임이 있다.
어플리케이션 컨텍스트를 사용하면 설정 클래스가 많아져도 프레임워크에서 관리를 해주기 때문에, 이를 알아야 하거나, 직접 사용할 필요가 없다.
애플리케이션 컨텍스트는 종합 IoC 서비스를 제공해준다.
애플리케이션 컨텍스트는 빈을 검색하는 다양한 방법을 제공한다.
1.5.3 스프링 IoC의 용어 정리
빈
빈 또는 빈 오브젝트는 스프링이 IoC 방식으로 관리하는 오브젝트이다.
주의할 점은 스프링을 사용하는 애플리케이션에서 만들어지는 모든 오브젝트가 다 빈은 아니라는 사실이다. -> 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.
빈 팩토리
스프링의 IoC 를 담당하는 핵심 컨테이너를 가리킨다.
빈을 등록하고, 생성하고, 조회하고 돌려주고, 그 외에 부가적인 빈을 관리하는 기능을 담당한다.
보통은 이 빈 팩토리를 바로 사용하지 않고 이를 확장한 애플리케이션 컨텍스트를 이용한다.
빈 팩토리 인터페이스에 getBean() 메소드가 정의되어 있다.
애플리케이션 컨텍스트
빈 팩토리를 확장한 IoC 컨테이너이다.
빈을 등록하고 관리하는 기본 기능에 추가적으로 스프링이 제공하는 각종 부가 서비스를 추가적으로 제공한다.
설정정보 / 설정 메타정보
애플리케이션 컨텍스트가 IoC 를 적용하기 위해 사용하는 메타정보를 말한다.
보통은 @Configuration 을 사용하는 클래스를 의미하며, IoC 컨테이너에 의해 관리 되는 애플리케이션 오브젝트를 생성하고 구성할 때 사용된다.
컨테이너 / IoC 컨테이너
애플리케이션 컨텍스트보다 더 추상적인 표현으로 보통은 의미하는 바가 비슷하거나 같다.
Last updated