Spring Framework란?
- Enterprise급 어플리케이션을 구축할 수 있는 가벼운 솔루션
- One-Stop-Shop(모든 과정을 한꺼번에 해결하는 상점)
- 원하는 부분만 가져다 사용할 수 있도록 모듈화가 잘 되어있다.
- IoC 컨테이너이다. (IoC = Inversion of Control : 제어의 역전)
- 선언적으로 트랜잭션을 관리할 수 있다.
- 완전한 기능을 갖춘 MVC Framework를 제공한다.
- AOP 지원
- 도메인 논리 코드와 쉽게 분리될 수 있는 구조
- 아래 그림과 같이 약 20개의 모듈로 구성되며 필요한 모듈만 가져다 사용하면 된다.
과정에서 배울 모듈
- spring-jdbc : 자바 JDBC프로그래밍을 쉽게 할 수 있도록 기능을 제공한다.
- spring-tx : 선언적 트랜잭션 관리를 할 수 있는 기능을 제공한다.
- spring-web : 멀티 파트 파일 업로드, 서블릿 리스너 등 웹 지향 통합 기능을 제공하며 HTTP클라이언트와 Spring의 원격 지원을 위한 웹 관련 부분을 제공한다.
- spring-webmvc : Web-Servlet 모듈이라고도 불리며, Spring MVC 및 REST 웹 서비스 구현을 포함한다.
spring이 익숙해지면 spring-AOP도 공부하자
Framework
- IoC (제어의 역전) 개념이 적용된 대표적인 기술
- 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합(프로그래머가 클래스를 완성해야 한다.)
- 객체 지향 개발 중 통합성, 일관성의 부족이 발생되는 문제를 해결할 방법 중 하나
- Framework 특징
- 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성 (컴포넌트는 재사용 가능)
- 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법 정의
- 높은 수준에서 패턴들을 조작화 할 수 있다.
Library
- 단순 활용가능한 도구들의 집합
- 개발자가 만든 클래스에서 호출하여 사용
- 클래스들의 나열로 필요한 클래스를 불러서 사용하는 방식
Framework vs Library
- 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있다.
- Framework은 전체적인 흐름을 스스로가 쥐고 있고, 사용자는 그 안에서 필요한 코드를 작성한다.
- Library는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이다.
- 다시 말하면 Library는 Library를 가져다 사용하고 호출하는 측면에서 주도성이 있으며, Framework는 틀안에 제어 흐름에 대한 주도성을 내포하고 있다.
- Framework는 가져다가 사용한다기 보다는 Framework 안에 들어가서 사용하는 느낌이다.
제어의 역전 (IoC = Inversion of Control)
- 어떠한 일을 하도록 만들어진 Framework에 제어의 권한을 넘김으로써 클라이언트 코드가 신경 써야 할 것을 줄이는 전략
- Framework의 메서드가 사용자(나)의 코드를 호출한다.
reference