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