1.5 스프링의 IoC

스프링에서의 가장 기본적인 작업 단위는 IoC방식으로 관리되는 오브젝트인 빈(bean)이다. 자바빈 또는 엔터프라이즈 자바빈(EJB)과 비슷한 오브젝트 단위의 애플리케이션 컴포넌트이다.

이러한 빈을 담는 IoC 핵심 컨테이너를 빈 팩토리라고 하며, 스프링에서는 IoC방식을 따라 만들어진 애플리케이션 컨텍스트(Application Context)를 주로 사용한다. 애플리케이션 컨텍스트는 빈팩토리를 상속하였기 때문에, 빈팩토리의 기능을 모두 포괄하여 사용할 수 있다.

그럼 왜 오브젝트 팩토리를 이용하지 않고 스프링의 애플리케이션 컨텍스트를 사용할까?

  1. 오브젝트 팩토리는 주로 하나의 오브젝트를 생성하고, 이 오브젝트와 관련된 오브젝트의 관계를 맺어주는 제한적인 역할을 하는 데 반해, 애플리케이션 컨텍스트는 애플리케이션에서 IoC를 적용하여 관리할 모든 오브젝트에 대한 생성과 관계설정을 담당한다. 즉, 더 넓은 범위에서 편리하게 설정을 해줄 수 있다는 뜻이다.
  2. 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다. 일관된 방식으로 원하는 오브젝트를 가져올 수 있으며, XML등을 이용하여 애플리케이션 컨텍스트가 사용한 IoC 설정 정보를 이용할 수도 있다.
  3. 애플리케이션 컨텍스트는 종합 IoC 서비스를 제공해준다. 단지 오브젝트를 생성하고 관계를 맺는데에 끝나는 것이 아니라, 오브젝트에 대한 후처리, 정보의 조합, 인터셉팅 등 오브젝트를 활용할 수 있는 다양한 기능을 제공한다.
  4. 애플리케이션 컨택스트는 빈을 검색하는 다양한 방법을 제공한다. getBean()메소드를 이용하여 빈의 이름을 토대로 검색하거나, 특정 애노테이션을 기준으로 빈을 찾을 수도 있다.

토비의 스프링 3.1을 토대로 작성하였으나, 개인적인 의견이 담겨있어 부정확한 내용이 작성되었을 수 있습니다. 코멘트로 많은 의견 부탁드립니다 :)


oksusutea's blog

꾸준히 기록하려고 만든 블로그