////
Search
☂️

들어가며

스프링이란 무엇인가?

스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크다.
애플리케이션 프레임워크는 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록 바탕이 되는 틀과 공통 프로그래밍 모델, 기술 API 등을 제공해준다.

애플리케이션의 기본 틀 - 스프링 컨테이너

스프링은 스프링 컨테이너 혹은 Application Context라고 하는 스프링 런타임 엔진을 제공한다.
이는 설정정보를 참고하여 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 독립적으로 동작할 수 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록하여 사용한다.

공통 프로그래밍 모델 - IoC/DI, 추상화, AOP

애플리케이션 코드가 어떻게 작성되어야 하는지에 대한 기준을 제시하는 것을 프로그래밍 모델이라 한다.

IoC/DI

오브젝트의 생명주기와 의존관계에 대한 프로그래밍 모델이다.
유연하고 확장성이 뛰어난 코드를 만들 수 있게 지원하는 객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 충실히 구현하는 IoC/DI를 프레임워크의 근간으로 삼고 있다.

서비스 추상화

환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어나며 유연한 애플리케이션을 만들 수 있게 해준다.
구체적인 기술과 환경에 종속되지 않도록 유연한 추상 계층을 두는 방법이다.

AOP

애플리케이션 코드 전반에 산재하여 나타나는 부가적인 기능을 독립적으로 모듈화하는 프로그래밍 모델이다.

기술 API

UI 작성은 물론, 웹 표현 계층, 비즈니스 계층, 서비스 계층, 도메인 계층 등에서 필요한 주요 기술을 스프링에서 일관된 방식으로 사용할 수 있도록 지원해주는 기능과 전략 클래스 등을 제공한다.

스프링의 성공요인

스프링이 사실상 자바 엔터프라이즈 표준 기술로 여겨지게 되는 이유는 무엇일까?
최첨단의 화려한 기능을 제공해주기 때문만은 아니고 되려 견고하고 건전한 자바와 엔터프라이즈 개발의 핵심 가치에 충실했기 때문이다.

단순함

스프링은 복잡해져가는 자바라는 객체지향 언어의 장점을 다시금 살릴 수 있도록 도와주는 도구다.
따라서 가장 강력하게 주장하는 것이 가장 단순한 객체지향적인 개발 모델인 POJO다.

유연성

스프링은 또 유연성을 중요한 가치로 내세운다.
스프링은 프레임워크를 위한 프레임워크, 또는 여러 프레임워크를 함께 사용하게 해주는 접착 프레임워크라고도 불린다.
스프링을 제대로 사용하려면 스프링을 필요에 맞게 확장해서 자신만의 프레임워크를 만들어 사용할 줄 알아야 한다.

스프링 학습과 활용의 어려움

스프링을 효과적으로 익히려면 다음 세 단계를 통해 스프링을 학습해보자.

스프링의 핵심 가치와 원리에 대한 이해

스프링에는 가장 중요한 핵심 가치와 그것이 가능하도록 만들어주는 세 가지 핵심 기술이 있다.
또한 스프링이 강조하는 중요한 프로그래밍 모델이 있다. 이를 먼저 자세히 공부하고 스프링을 일관된 방식으로 이해할 수 있는 눈을 갖는 것이 첫 번째다.

스프링의 기술에 대한 지식과 선택 기준 정립

이 단계에서는 스프링이 이를 어떻게 다양한 방법으로 확장하고 적용했는지를 살펴볼 차례다.
이 과정에서 다양한 방법들 중, 자신의 프로젝트에 어떤 것을 선택할 것인지, 어떤 스타일로 사용할 것인지의 문제를 기술 영역별로 효과적으로 다루는 법을 배워야 한다.
먼저 스프링이 제공하는 기술의 종류와 접근 방법을 파악하고, 선택의 기준을 마련하여 상황에 맞는 최선의 기술과 접근 방법을 선택할 수 있어야 한다.

스프링의 적용과 확장

스프링의 다양한 기술을 어떻게 실제 애플리케이션 개발에 어떤 식으로 적용해야 하는지를 공부해야 한다.