스프링이란 무엇인가?
•
스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크다.
•
애플리케이션 프레임워크는 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록 바탕이 되는 틀과 공통 프로그래밍 모델, 기술 API 등을 제공해준다.
애플리케이션의 기본 틀 - 스프링 컨테이너
•
스프링은 스프링 컨테이너 혹은 Application Context라고 하는 스프링 런타임 엔진을 제공한다.
•
이는 설정정보를 참고하여 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 독립적으로 동작할 수 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록하여 사용한다.
공통 프로그래밍 모델 - IoC/DI, 추상화, AOP
•
애플리케이션 코드가 어떻게 작성되어야 하는지에 대한 기준을 제시하는 것을 프로그래밍 모델이라 한다.
IoC/DI
•
오브젝트의 생명주기와 의존관계에 대한 프로그래밍 모델이다.
•
유연하고 확장성이 뛰어난 코드를 만들 수 있게 지원하는 객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 충실히 구현하는 IoC/DI를 프레임워크의 근간으로 삼고 있다.
서비스 추상화
•
환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어나며 유연한 애플리케이션을 만들 수 있게 해준다.
•
구체적인 기술과 환경에 종속되지 않도록 유연한 추상 계층을 두는 방법이다.
AOP
•
애플리케이션 코드 전반에 산재하여 나타나는 부가적인 기능을 독립적으로 모듈화하는 프로그래밍 모델이다.
기술 API
•
UI 작성은 물론, 웹 표현 계층, 비즈니스 계층, 서비스 계층, 도메인 계층 등에서 필요한 주요 기술을 스프링에서 일관된 방식으로 사용할 수 있도록 지원해주는 기능과 전략 클래스 등을 제공한다.
스프링의 성공요인
•
스프링이 사실상 자바 엔터프라이즈 표준 기술로 여겨지게 되는 이유는 무엇일까?
•
최첨단의 화려한 기능을 제공해주기 때문만은 아니고 되려 견고하고 건전한 자바와 엔터프라이즈 개발의 핵심 가치에 충실했기 때문이다.
단순함
•
스프링은 복잡해져가는 자바라는 객체지향 언어의 장점을 다시금 살릴 수 있도록 도와주는 도구다.
•
따라서 가장 강력하게 주장하는 것이 가장 단순한 객체지향적인 개발 모델인 POJO다.
유연성
•
스프링은 또 유연성을 중요한 가치로 내세운다.
•
스프링은 프레임워크를 위한 프레임워크, 또는 여러 프레임워크를 함께 사용하게 해주는 접착 프레임워크라고도 불린다.
•
스프링을 제대로 사용하려면 스프링을 필요에 맞게 확장해서 자신만의 프레임워크를 만들어 사용할 줄 알아야 한다.
스프링 학습과 활용의 어려움
•
스프링을 효과적으로 익히려면 다음 세 단계를 통해 스프링을 학습해보자.
스프링의 핵심 가치와 원리에 대한 이해
•
스프링에는 가장 중요한 핵심 가치와 그것이 가능하도록 만들어주는 세 가지 핵심 기술이 있다.
•
또한 스프링이 강조하는 중요한 프로그래밍 모델이 있다. 이를 먼저 자세히 공부하고 스프링을 일관된 방식으로 이해할 수 있는 눈을 갖는 것이 첫 번째다.
스프링의 기술에 대한 지식과 선택 기준 정립
•
이 단계에서는 스프링이 이를 어떻게 다양한 방법으로 확장하고 적용했는지를 살펴볼 차례다.
•
이 과정에서 다양한 방법들 중, 자신의 프로젝트에 어떤 것을 선택할 것인지, 어떤 스타일로 사용할 것인지의 문제를 기술 영역별로 효과적으로 다루는 법을 배워야 한다.
•
먼저 스프링이 제공하는 기술의 종류와 접근 방법을 파악하고, 선택의 기준을 마련하여 상황에 맞는 최선의 기술과 접근 방법을 선택할 수 있어야 한다.
스프링의 적용과 확장
•
스프링의 다양한 기술을 어떻게 실제 애플리케이션 개발에 어떤 식으로 적용해야 하는지를 공부해야 한다.