티스토리 뷰

스프링을 통해 많이 알려진 제어의 역전(IoC)이란 용어는 개발자가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게되는 소프트웨어 디자인 패턴을 말한다.

즉, 제어의 권한이 다른 대상에게 위임하는 구조이다.

 

재사용 라이브러리의 흐름 제어란 결국 프레임워크(framework)에 대한 내용으로 결론 즈음에 다시 이야기 하겠지만 제어의 역전이란 개념은 스프링에 국한되지 않고 모든 프레임워크에 필연적으로 적용되는 일반적인 개념이다.

 

전통적인 프로그램에서 흐름은 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용한다. 반면 제어의 역전이 적용된 구조에서는 외부 라이브러리의 코드가 개발자가 작성한 코드를 호출한다.

 

여기서 프레임워크와 라이브러리를 분명하게 구분해서 사용해야 한다.

 

개발된 코드를 중심으로 능동적으로 사용할 수 있으면 라이브러리가 되고 수동적으로 사용이 되어 지면 프레임워크로 볼 수 있다. 즉 애플리케이션의 제어 주도권으로 구분이 가능하다.

 

설계 목적상 제어의 역전의 목적은 다음과 같다. (참고)

 

- 작업을 구현하는 방식과 작업 수행 자체를 분리한다.
- 모듈을 제작할 때, 모듈과 외부 프로그램의 결합에 대해 고민할 필요 없이 모듈의 목적에 집중할 수 있다.
- 다른 시스템이 어떻게 동작할지에 대해 고민할 필요 없이, 미리 정해진 협약대로만 동작하게 하면 된다.
- 모듈을 바꾸어도 다른 시스템에 부작용을 일으키지 않는다.

 

즉, 자바의 객체지향적 유연성을 기르기 위한것이라고 생각할 수 있다.

 

아래는 제어의 역전 개념이 적용되어 있는 자바의 디자인 패턴들 이다.

 

템플릿 메소드 패턴

상위 클래스에서 처리의 흐름을 제어하며, 하위 클래스에서 처리의 내용을 구체화한다. 여러 클래스에 공통되는 사항은 상위 추상 클래스에서 구현하고, 각각의 상세부분은 하위 클래스에서 구현한다.

추상 클래스를 상속한 서브클래스는 어떻게 사용될지는 자시니 모른다. 자신의 제어 권한을 상위 추상 클래스에 넘겨 제어를 대리하도록 하는 이 개념은 제어의 역전의 개념과 일치함을 확인 할 수 있다. (참고)

 

팩토리 메소드 패턴

서브클래스에서 오브젝트 생성 방법과 클래스를 결정할 수 있도록 나머지 로직, 즉 슈퍼클래스의 기본 코드에서 독립시키는 방법을 팩토리 메소드 패턴이라 한다. 이 메소드는 주로 인터페이스 타입으로 오브젝트를 리턴한다

이 패턴은 오브젝트에 대한 생성을 서브 클래스가 하도록 위임하는 방법이다. 역시 클라이언트는 어떤 클래스의 오브젝트가 만들어 질지에 대한 관심을 분리시켜 객체지향적이며 제어의 역전 개념이 적용되어 있다고 볼 수 있다.

 

 

스프링은 프레임워크이다.

프레임워크는 개발자의 애플리케이션 코드의 흐름을 주도해야 하며 이 과정중에 제어의 역전이 일어날 수 밖에 없다.

제어의 역전의 개념은 이와 같이 스프링에서 나타난 새로운 용어가 아닌 이미 많은 곳에서 적용되어 사용되고 있는 용어이다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함