- 스프링 : 자바 애플리케이션 개발에 사용되는 애플리케이션 프레임워크
애플리케이션 프레임워크 : 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록 애플리케이션의 바탕이 되는 틀, 공동 프로그래밍 모델, 기술 API 등을 제공.
애플리케이션의 기본 틀 : 스프링 컨테이너
- 스프링은 스프링 컨테이너, 또는 애플리케이션 컨텍스트라 불리는 스프링 런타임 엔진을 제공하며, 이것은 설정정보를 참고로 해 애플리케이션을 구성하는 오브젝트를 생성하고 관리함.
독립적 동작도 가능하지만, 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용함.
공통 프로그래밍 모델 - IoC/ID, 서비스 추상화, AOP
- 프레임웤은 애플리케이션 코드가 어떻게 작성돼야 하는지에 대한 기준도 제시함. → 보통 프로그래밍 모델이라고 한다.
- IoC/DI : 오브젝트 생명주기와 의존관계에 대한 프로그래밍 모델.
스프링 프레임워크에서 동작하는 코드는 이 방식을 따라서 작성돼야 스프링이 제공하는 가치를 제대로 누릴 수 있음.
- 서비스 추상화 : 구체적인 기술과 환경에 종속되지 않도록 유연한 추상 계층을 두는 방법.
- AOP : 애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화하는 프로그래밍 모델. 이를 이용해 다양한 엔터프라이즈 서비스를 적용하고도 깔끔한 코드를 유지할 수 있게 해줌.
기술 API
- 방대한 양의 기술 API 제공.
이 API와 지원 기술은 모두 스프링의 프로그래밍 모델에 따라 작성되었기 때문에, 이를 쓰는 것만으로도 스프링의 프로그래밍 모델을 코드에 자연스럽게 적용할 수 있음.
스프링의 성공요인
단순함
- EJB라는 불필요하게 복잡한 기술을 비판하면서 등장.
자바라는 언어의 근본에서 기존 기술의 문제에 대한 해법을 찾았는데, 객체지향 언어
의 장점이 그것.
스프링이 강력히 주장하는 것은 가장 단순한 객체지향적인 개발 모델인 POJO 프로그래밍이다.
유연성
- 유연성과 확장성이 매우 뛰어남.
다른 많은 프레임워크와 편리하게 접목돼서 사용될 수 있다. 프레임워크와 프레임워크를 이어주는 접착 프레임워크
라고 불리기도 한다.
스프링 학습
1. 스프링의 핵심 가치와 원리에 대한 이해
- 스프링의 가장 중요한 핵심 가치와 그것이 가능하도록 도와주는 세 가지 핵심 기술을 먼저 이해하자.
2. 스프링의 기술에 대한 지식과 선택 기준 정립
- 스프링은 매우 범용적인 프레임워크로 스프링이 제공하는 방법 중에서 어떤 것을 선택할지는 개발자의 몫.
이 다양한 선택의 문제를 각 기술영역별로 효과적으로 다루는 법을 배운다.
3. 스프링의 적용과 확장
- 다양한 기술을 어떻게 실제 애플리케이션 개발에 어떤 식으로 적용해야하는가? 스프링을 실전에서 사용하는 데 필요한 응용 방법과 확장방법을 고민하자.