IoC (Inversion of Control)
IoC란 "제어의 역전" 즉, 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다는 뜻임.
즉, 컨테이너 역할을 해주는 프레임워크에게 제어하는 권한을 넘겨서 개발자의 코드가 신경 써야 할 것을 줄이는 전략
- 프레임워크의 동작원리를 제어흐름이 일반적인 프로그램 흐름과 반대로 동작하므로 IoC라고 설명함.
- Spring 컨테이너는 IoC를 지원하며, 메타데이터(XML설정)을 통해 beans를 관리하고 어플리케이션의 중요부분을 형성함.
- Spring 컨테이너는 관리되는 bean들을 의존성 주입( Dependency Injection)을 통해 IoC를 지원함.
클래스 라이브러리 (Class Library)
프레임워크는 특정 부분의 기술적인 구현을 라이브러리 형태로 제공한다.
Class Library라는 구성요소는 프레임워크의 정의 중 하나인 "Semi Complete (반제품)" 이다.라고 해석하게 만듬
※라이브러리와 프레임워크의 차이점
- 프레임워크와 라이브러리를 구분하는 방법은 실행제어가 누구에게 있는가이다.
- 라이브러리는 개발자가 만든 클래스에서 직접 호출하여 사용하므로 실행의 흐름에 대한 제어를 개발자의 코드가 관장하고 있다.
- 프레임워크는 반대로 프레임워크에서 개발자가 만든 클래스를 호출하여 실행의 흐름에 대한 제어를 담당한다.
디자인 패턴
" 디자인 패턴 + 라이브러리 = 프레임워크 "
프레임워크는 디자인 패턴과 그것이 적용된 기반 라이브러리의 결합으로 이해할 수 있다.
프레임워크의 라이브러리를 살펴볼 떄도 적용도니 패턴을 주목해서 살펴 본다면 그 구성을 이해하기 쉽다.
특히, 프레임워크를 확장하거나 커스터마이징 할 때는 프레임워크에 적용된 패턴에 대한 이해가 꼭 필요하다.
프레임워크 종류
기능 | 프레임워크 |
웹(MVC) | Spring MVC |
OR(Object - Relational) 매핑 | MyBatis |
AOP(Aspect Oriented Programming) | Spring AOP |
Di( Dependecy injection) | Spring DI |
Build와Library관리 | Maven, Gradle |
단위 테스트 | jUnit |
JavaScript | jQuery, Node.js |