Toby 스프링3 1부 8장 스프링이란 무엇인가?
18 Sep 2017 | 스프링 spring8장 스프링이란 무엇 인가?
8.1 스프링의 정의
자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
- 애플리케이션 프레임워크 : 애플리케이션의 전 영역을 관통하는 일관된 프로그래밍 모델과 핵심기술을 바탕으로 해서 빠르고 효과적으로 개발할 수있게 도와줌
- 경량급: 코드에서 프레임워크와 서버환경에 의존적인 부분을 제거
- 자바엔터프라이즈 개발을 편하게 : 비즈니스 로직을 빠르고 효과적으로 구현할 수 있다.
- 오픈소스
8.2 스프링의 목적
8.2.1 엔터프라이즈 개발의 복잡함
복잡함의 근복적인 원인
- 기술적 복잡함 : 기술적인 제약 조건과 요구사항이 증가 하고 있다.
- 비즈니스 로직의 복잡함 : 기능 요구사항과 업무 정책이 수시로 변경된다.
8.2.2 복잡함을 해결하려는 도전
제거될 수 없는 근본적인 복잡함
복잡함의 원인은 제거 대상이 아니다. 대신 그 복잡함을 효과적으로 상대할 수 있는 전략과 기법이 필요하다.
비침투적(non-invasive)인 방식을 통한 효과적인 해결책
기술적 복잡함과 비즈니스 로직의 복잡함을 분리하다.
8.2.3 복잡함을 상대하는 스프링의 전략
기술적인 복잡함
- 서비스 추상화
- AOP 활용
비즈니스 로직의 복잡함을 상대하는 전략
데이터 중심 설계에서 도메인 객체 중심 설계로 변경
핵심도구 : 객체지향과 DI
8.3 POJO 프로그래밍
분리됐지만 반드시 필요한 엔터프라이즈 서비스 기술을 POJO방식으로 개발된 애플리케이션 핵심 로직을 담은 코드에 제공
8.3.1 스프링의 핵심 POJO
POJO 삼각형 DI: 유연하고 확장가능한 오브젝트를 만들어 두고 그 관계를 외부에서 다이내믹하게 설정해 준다.
8.3.2 POJO란 무엇인가 ?
POJO(Plain Old Java Object)
8.3.3 POJO의 조건
- 특정 규약(context)에 종속되지 않는다.
- 특정 환경에 종속되지 않는다.
진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다. 그런 POJO에 애플리케이션 핵심로직과 기능을 담아 설계하고, 개발하는 방법을 POJO 프로그래밍이라고 한다.
8.3.4 POJO의 장점
- 깔끔한 코드
- 자동화 테스트에 유리
- 객체지향적인 설계를 자유롭게 적용할 수 있다.
8.3.5 POJO 프레임워크
POJO 프로그래밍을 가능하도록 기술적인 기반을 제공하는 프레임 워크
스프링, 하이버네이트
스프링은 개발자가 엔터프라이즈 기술보다 객체지향적인 설계와 개발원리에 집중할 수 있는 기회를 준다.
8.4 스프링의 기술
8.4.1 IoC/DI
DI의 활용방법
- 핵심기능의 변경
- 핵심기능의 동적 변경 : 다이내믹 라우팅 프록시, 프록시 오브젝트 기법
- 부가기능의 추가 : 데코레이터 패턴
- 인터페이스 변경 : 어뎁터 패턴
- 프록시
- 템플릿과 콜백
- 싱글톤과 오브젝트 스코프
- 테스트
8.4.2 AOP
AOP의 적용기법
- 다이내믹 프록시 사용
- AspectJ
AOP의 적용단계
1 단계 : 미리 적용된 AOP만 이용한다.
2 단계 : 젅담팀을 두고 정책 AOP를 관리한다.
3 단계 : 이제 익숙해 졌다면 개발자가 AOP를 자유롭게 사용한다.
8.4.3 포터블 서비스 추상화(PSA)
8.5 정리
- 스프링의 그 개발철학과 목표를 분명히 이해하고 사용해야 한다.
- 스프링은 오픈소스 소프트웨어이며, 애플리케이션 개발의 모든 기술과 영역을 종합적으로 다루는 애플리케이션 프레임워크다.
- 엔터프라이즈 애플리케이션 개발의 복잡함은 비즈니스 로직과 엔터프라이즈 시스템의 기술적인 요구사항으로 발생한다. 기존의 접근 방식은 이 복잡도를 낮추지 못하며 자바의 객체지향적인 장점을 포기해야 한다는 문제점이 있다.
- 자바의 근본인 객체지향적인 원리에 충실하게 개발할 수 있으며, 환경과 규약에 의존적이지 않은 POJO를 이용한 애플리케이션 개발은 엔터프라이즈 시스템 개발의 복잡함이 주는 많은 문제를 해결할 수 있다.
- 스프링의 목적은 이런 POJO를 이용해 엔터프라이즈 애플리케이션을 쉽고 효과적으로 개발할 수 있도록 지원해주는 데 있다.
- POJO 방식의 개발을 돕기 위해 스프링은 IoC/DI, AOP/ PSA와 같은 가능기술을 프레임워크와 컨테이너라는 방식을 통해 제공한다.
스프링이 어떻게 엔터프라이즈 개발의 복잡함을 제거하고, POJO 프로그래밍이라는 효과적인 방법을 사용할 수 있게 하는지 관심을 갖는 것이 스프링을 가장 빠르게 이해하고 적용할 수 있는 지름길이다.
Comments