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