Skip to content

Latest commit

 

History

History
28 lines (15 loc) · 2.45 KB

library-framework.md

File metadata and controls

28 lines (15 loc) · 2.45 KB

Library vs. Framework (with IoC)

프레임워크는 라이브러리의 집합이 아니에요.

라이브러리를 사용하는 어플리케이션 코드는 어플리케이션 흐름을 직접 제어합니다. 단지 동작하는 중에 필요한 기능을 위해 라이브러리를 사용할 뿐입니다. 반면에 프레임워크는 거꾸로 어플리케이션 코드가 프레임워크에 의해 사용됩니다. 보통 프레임워크 위에 개발한 클래스를 등록해두고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 어플리케이션 코드를 사용하도록 만드는 방식입니다. 이렇게 프레임워크에는 제어의 역전(Inversion of Control) 개념이 적용되어 있어야 합니다.

IoC(Inversion of Control)

제어의 역전에서 객체는 자신이 사용할 객체를 스스로 선택하지도 생성하지도 않습니다. 또한 본인 스스로도 어떻게 만들어지고 어디서 사용되는지 알 수 없습니다. 모든 제어 권한을 자신이 아닌 다른 대상에 위임하기 때문입니다. 이 다른 대상은 객체의 생성과 관계설정, 사용, 생명주기 관리 등을 관장하게 됩니다.

이렇게 제어의 역전을 적용하면 설계가 깔끔해지고 유연성이 증가하며 확장성이 좋아집니다. 제어의 역전은 프레임워크 뿐만 아니라 다양한 곳에서 적용되고 있습니다.

Servlet

서블릿에도 제어의 역전 개념이 적용되어 있습니다. 서블릿에 대한 제어 권한을 가진 컨테이너가 적절한 시점에 서블릿 클래스의 객체를 만들고 그 안의 메서드를 호출합니다.

Template Method Pattern

템플릿 메서드 패턴에도 제어의 역전 개념이 적용되어 있습니다. 제어권을 상위 템플릿 메서드에 넘기고 자신은 필요할 때 호출되어 사용되도록 하기 때문입니다.

Spring

스프링은 제어의 역전을 극한까지 사용하고 있는 프레임워크입니다.

빈 팩토리(Bean Factory): 스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 객체를 빈이라 부르며, 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 객체를 빈 팩토리라고 합니다. 이를 확장한 것이 어플리케이션 컨텍스트(Application Context)입니다. (ApplicationContext는 BeanFactory 인터페이스를 상속하고 있음!)

참고 자료

  • 토비의 스프링 3.1 Vol.1