0. 스프링이란 무엇인가
토비의 스프링 정리 프로젝트 #0 들어가기 전에 - 스프링이란 무엇인가?
스프링이란?
자바 애플리케이션 개발을 도와주는 프레임워크이다.
애플리케이션의 틀
,공통 프로그래밍 모델
,기술 API
등을 제공한다.
스프링 컨테이너
스프링 컨테이너
혹은애플리케이션 컨텍스트
로 불리는 스프링 런타임 엔진이다.설정 정보(configuration)
를 참고하여 오브젝트를 만들고 관리한다.독립적으로 사용 가능하나, 웹 모듈에서 동작하는
서비스
,서블릿
으로 등록해 사용한다.
공통 프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP
공통 프로그래밍 모델
스프링은
공통 프로그래밍 모델
을 통해 애플리케이션 코드가 어떻게 작성돼야 하는지에 대한 기준(틀)을 제공한다.
IoC/DI
IoC/DI
는 스프링이 제공하는 모든 기술, API, 컨테이너의 기반이 되는 기술이다.
서비스 추상화
환경, 서버, 특정 기술에 종속되지 않는 이식성 뛰어난 유연한 애플리케이션을 작성하는 토대이다. 주로, 유연한 추상 계층을 둠으로써 구현된다.
ex) 자바의 다형성을 기반으로 구현할 수 있다.
AOP (Aspect Oriented Programming)
애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화하는 프로그래밍 모델이다.
ex) 모든 메소드에 적용되는 로깅, 소요시간 측정 등에 적용할 수 있다.
기술 API
웹 프레젠테이션, 비즈니스 서비스, 기반 서비스, 도메인, 데이터 액세스 계층 등에서 필요한 주요 기술 및 전략 클래스 등을 스프링에서 일관된 방식으로 사용할수 있도록 지원한다.
스프링의 모든 기술은 표준 자바 EE에 기반을 두고 있다.
종합 정리
IoC/DI
: 스프링 컨테이너 위에 직접 작성한 클래스를 오브젝트로 올려 활용할 수 있다.공통 프로그래밍 모델
: 스프링의공통 프로그래밍 모델
을 따라 스프링이 지향하는 방향으로 코드를 작성할 수 있다.기술 API 및 서비스
: 엔터프라이즈 기술을 사용할 때 활용한다.
스프링의 성공 요인
자바 엔터프라이즈 개발의 핵심 가치에 충실하여 베스트 프랙티스 적용에 용이
이상적인 개발철학, 프로그래밍 모델은 이해에 도움이 되고 좋은 개발 습관을 만듦
가장 중요한 두가지 가치인 단순함과 유연성을 강조했음
단순함
기존 EJB라는 표준 기술의 복잡함을 타파함. 스프링은 가장 단순한 객체지향적인 개발 모델인 POJO 프로그래밍을 지향함
유연성
항상 "프레임워크 기반의 접근 방법을 사용하는 것"이 핵심 철학임
많은 서드파티 프레임워크의 지원을 받지만 코드베이스가 흔들리거나 새로 만드는 일이 없었음
스프링 학습 방법
스프링의 핵심 가치와 원리에 대한 이해
핵심 가치를 이해하고, 핵심 가치를 이룰 수 있도록 도와주는 세 가지 핵심 기술을 이해하라.
스프링이 강조하는 중요한 프로그래밍 모델을 이해하고, 스프링을 일관된 방식으로 이해할 수 있는 눈을 갖춰라.
스프링 기술에 대한 지식과 선택 기준 정립
다양한 선택의 문제를 각 기술 영역별로 효과적으로 다루는 방법을 배워야 한다.
스프링은 애플리케이션의 모든 레이어를 폭 넓게 다루며 영역별로 다양한 접근 방법을 제공한다.
많은 방법 중 어떤 것을 선택할 것인지, 어떤 것을 연동할 것인지, 어떤 스타일을 사용할 것인지
상황에 따른 최선의 방법을 선택할 수 있어야 한다.
스프링의 적용과 확장
스프링이 제공하는 기능을 확장, 추상화할 줄 알아야 한다.
스프링을 기반으로 새로운 프레임워크를 만들 수 있으면 바람직하다.
때론 스프링의 자유도를 줄이고, 현장 상황에 맞는 접근방법을 정립해줄 수 있어야 한다.
스프링이 지원하지 않는 기술을 스프링에 맞게 통합할 수도 있어야 한다.
스프링의 핵심
기본으로 돌아가 객체지향 프로그래밍이 제공하는 폭 넓은 혜택을 누리자
객체지향 기술과 설계, 구현에 관한 실용적인 전략과 검증된 베스트 프랙티스를 평범한 개발자도 자연스럽고 손쉽게 이용할 수 있게 만들자
Last updated