[스프링] 어플리케이션 컨텍스트 ( Application Context )
지난 포스팅에서
프레임워크(Framework)란
무엇인가 알아보았다.
간단히 요약하면
프레임워크는 객체의 생성 및 관계 설정 권한을
소스코드로부터 완전히 가져오는 도구를 의미한다.
이를, 제어의 역전(IoC)이라 부른다.
그럼 이번 포스팅에서 구체적으로 어떤 방식으로
제어의 역전이 이루어지는지 알아보자.
어플리케이션 컨텍스트 ( Application Context )
지난 포스팅에서 객체의 생성 및 관계 설정 권한을 담당하는 Factory 클래스를 만들어 제어의 역전(IoC)를 구현했다. 그러나 이렇게 소스코드로 Factory 클래스를 구현하면 '일부' 객체의 생성 및 관계 설정 권한만 다룰 수 있다. 위 그림의 DaoFactory 클래스는 Dao 인터페이스의 구현객체 생성만 다루는 팩토리이다. 그러므로 다양한 객체를 다루려면 프로그램 전반에 걸쳐 범용적으로 사용될 Factory 클래스가 필요하다.
이를 위해, 객체의 생성 및 관계 설정 권한을 아예 소스코드로부터 분리하고 해당 기능을 지원할 도구를 만드는데, 그것이 스프링 프레임워크이다. 스프링 프레임워크의 '빈팩토리(bean factory)'가 프로그램 전체에 걸쳐 범용적인 객체의 생성 및 관계 설정 기능을 수행한다. 그리고 이 '빈팩토리'의 제어와 더불어 프로그램의 모든 구성요소의 제어 기능을 추가하여 생성한 '컨테이너'가 바로 '어플리케이션 컨텍스트(Application Context)'이다.
클래스 B , C , D는 Dao 인터페이스의 구현객체가 필요하다. 스프링 프레임워크를 사용하지 않으면 DaoFactory 클래스의 객체를 직접 생성하여 원하는 구현객체를 공급받아야 한다. 그러나 DaoFactory는 Dao 인터페이스를 위한 팩토리이지 다른 객체를 생성하지 못한다. 그러므로 스프링 프레임워크를 사용하면 어플리케이션 컨텍스트 하나로 다양한 Factory를 제공받을 수 있다.
어플리케이션 컨텍스트는 '설정정보'를 다룬다. 설정정보 안에 구체적인 객체 생성 및 관계 설정 관련 내용이 담겨져 있다. 그러므로 개발자는 설정정보에 원하는 객체의 생성정보만 담으면 어플리케이션 컨텍스트를 통해 어느 클래스에게나 객체를 제공할 수 있다. 그리고 설정정보에 저장된 내용만 수정하면 해당 객체를 제공받는 클래스들은 어떤 수정도 할 필요가 없다.
설정정보는 JAVA 코드로도 구현할 수 있고 XML 코드로도 구현 가능하다. 다음 포스팅부터는 실제 스프링 프레임워크를 다루어보겠다.
참고문헌