# 저자 서론

$ 기본으로 돌아가서 원칙에 충실하려고 노력하는 일


# 들어가며

$ 스프링이란?

% 정의

> 엔터프라이즈 어플 개발에 사용되는 어플 프레임워크

> 어플 프레임워크는 개발을 빠르고 효율적으로 할 수 있도록 그 바탕이 되는 틀과 프로그래밍 모델, API 등을 제공

> 어플의 기본 틀은 스프링컨테이너(어플 컨텍스트) - 스프링런타임엔진

> 스프링컨테이너는 설정파일(xml)을 참고해서 어플을 구성하는 오브젝트를 생성/관리

> 스프링컨테이너는 웹모듈에서 하나의 서비스 또는 서블릿으로 등록되어 사용

% 핵심

> 스프링컨테이너를 다루며 컨테이너가 어플의 오브젝트를 이용할 수 있도록 설정정보를 작성하는 방법이 중요

% 프로그래밍 모델

> IoC(제어역전)/DI(의존주입), 서비스추상화, AOP(관점지향) 

> 스프링을 통한 어플 개발은 위 모델을 잘 응용해야 함

% 요약

> 클래스는 스프링컨테이너로 오브젝트로 생성되어 동작하고, 프로그래밍모델로 코딩하고 API를 잘 활용하자

% 스프링의 개발지향성은 단순한 객체지향적 프로그래밍 모델인 POJO 프로그래밍이다.

% 학습목표

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


# 구성

$ 1부: 기본원리와 핵심기술 소개

$ 2부: 개별 기술의 내용과 응용


# 참고

$ 내장형DB 지원, RESTTemplate for REST

$ 로드 존슨 "컴퓨터에게 물어보라-실증적 접근 방법"




========================================================================================


1부 이해

1장 오브젝트와 의존관계

1.2.1 관심사의 분리(separation of concerns)

- 중복코드의 메소드 추출(DB연결 Connection 등) : 리팩토링의 메소드 추출

- 변화가능한 메소드의 추상화 => 상속하는 서브클래스에서 구현 : 템플릿 메소드 디자인 패턴

- 팩토리 메소드 패턴 : 서브클래스에서 구체적인 객체생성하도록 설계하는 디자인 패턴

- 디자인패턴 참고 - [GoF의 디자인 패턴:에릭감마], [Head First Design Patterns:에릭 프리먼]

1.3.1 클래스 분리(비 상속을 통한 확장성 제고)

- 상속의 강한결합을 해소하기 위한 인터페이스의 사용

1.3.4 원칙과 패턴

- 개방폐쇄원칙(open-closed principle) : 클래스나 모듈은 확장에는 열려있어야하고 변경에는 닫혀 있어야 한다

- 객체지향 설계 원칙(SOLID)-로버트 마틴 : http://butunclebob.com/ArticleS.UncleBob.PrinceplesOfOod

> SRP(The Single Responsibility Principle) : 단일 책임 원칙

> OCP(The Open Closed Principle) : 개방 폐쇄 원칙

> LSP(The Liskov Subsitution Principle) : 리스코프 치환 원칙

> ISP(The Interface Segregation Principle) : 인터페이스 분리 원칙

> DIP(The Dependency Inversion Principle) : 의존관계 역전 원칙

1.5 스프링의 IoC : 스프링의 핵심은 IoC이다

106p





+ Recent posts