스프링이란?
- 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크
스프링 컨테이너
스프링 컨테이너는 설정정보를 참고로 하여 애플리케이션을 구성하는 오브젝트를 생성 & 관리한다.
독립적으로 동작 가능하지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록하여 사용한다.
스프링이 제공하는 세가지 핵심 프로그래밍 모델
1. IoC / DI
오브젝트의 생명주기와 의존관꼐에 대한 프로그래밍 모델.
객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 담고 있으며 프레임 워크의 근간으로 삼고 있다.
스프링이 직적 제공하는 모든 기술과 API, 심지어 컨테이너도 IoC/DI 방식으로 작성되어 있다.
2. 서비스 추상화
이식성이 뛰어나다.(서버, 특정 기술에 종속 되지 않는다.)
3. AOP
애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화 하는 프로그래밍 모델이다.
스프링을 통해 얻게 되는 두가지 중요한 가치
1. 단순함 (simplicity)
스프링은 EJB라는 강한 권위를 가졌던 표준 기술을 비판하면서 등장했다.
EJB가 복잡한 반면 스프링은 단순하고 명쾌한 접근 방법.
자바의 본질인 객체지향 언어라는 특징을 다시 살릴 수 있도록 도와 주는 도구.
그래서 스프링이 강력히 주장하는 것은 단순한 객체지향적인 개발 모델인 POJO 프로그래밍이다.
2. 유연성 (flexibility)
유연성, 확장성이 매우 뛰어 나다.
스프링의 기능 대부분은 핵심 기능을 확장해서 발전시킨 결과물이다.
스프링은 9년간 단 한번도 코드 베이스를 흔들거나 새로 만드는 일 없이 발전해왔다.
스프링을 제대로 사용하려면 스프링을 필요에 맞게 확장하여 사용할 줄 알아야 한다.
효과적인 스프링 학습 세단계
1. 스프링의 핵심 가치와 원리에 대한 이해
스프링에는 가장 중요한 핵심 가치와 그것이 가능하도록 도와주는 세 가지 핵심 기술, 중요한 프로그래밍 모델이 있다.
이를 먼저 공부하고 스프링을 일괄된 방식으로 이해할 수 있는 눈을 갖추자.
2. 스프링의 기술에 대한 지식과 선택 기준 정립
어떻게 다양한 방법으로 확장하고 적용했는지 살펴보자. 스프링은 매우 범용적인 프레임워크다.
또한 애플리케이션의 모든 레이어를 폭넓게 다루고 있다. 기술 영역별로 폭넓은 접근 방법을 제공한다.
어떤 방법을 선택할 것인지, 스프링과 연동할 프레임워크는 어떤 것을 선택하고 어떤 스타일로 사용할 것인지의 문제는
부담이기 때문에 다양한 선택의 문제를 각 기술영역별로 효과적으로 다루는 방법을 배우자.
스프링이 제공하는 기술의 종류, 접근방법을 배우고 선택의 기준을 마련하여 최선의 기술과 접근 방법을 선택할 수 있어야 한다.
3. 스프링의 적용과 확장
스프링의 다양한 기술을 어떻게 실제 애플리케이션 개발에 어떻게 적용해야 하는지를 공부해야 한다. 스프링에 제공하는 기능을 그대로 사용 하는 것 외에도 그것을 확장하거나 추상화 하는 방법을 알아야 한다.