2. Purpose of Spring
- 경량급 프레임워크인 스프링을 활용해서 엔터프라이즈 애플리케이션 개발을 편하게 하는 것
1) 엔터프라이즈 개발의 복잡함
a. 이유
- 기술적인 제약조건과 요구사항이 늘어남
- 비즈니스 로직 복잡도 증가
2) 복잡함을 해결하려는 도전
a. 제거 될수 없는 근본적인 복잡함
- 복잡함을 효과적으로 상대할 수 있는 전략과 기법필요
- 비즈니스 로직의 복잡함을 효과적으로 다룰 방법과 기술적인 복잡함을 효과적으로 처리하는 데 적용되는 방법이 다름
- 전통적인 개발 방식은 힘듬, 두가지 일 을 분리해내야함
b. 실패한 해결책 EJB(Enterprise Java Bean)
- 목표는 두가지의 복잡성을 분리하는것 (실패함)
- EJB라는 환경과 스펙에 종속되는 코드로 만들어져야하는 더 큰 복잡함 추가
3) 비침투적인 방식을 통한 효과적인 해결책: 스프링
a. 스프링은 비침투적기술(non-invasive)
- 비침투적기술: 기술에 적용 사실이 코드에 직접반영되지 않음
- 침투적 : 기술과 관련된 코드나 규약 등이 코드에 등장
4) 복잡함을 상대하는 스프링의 전략
- 비즈니스 로직을 담은 애플리케이션 코드와 엔터프라이즈 기술을 처리하는 코드의 분리
a. 기술적 복잡함을 상대하는 전략
- 기술에 대한 접근 방식이 일관성이 없고, 특정 환경에 종속적이다.
: 환경, 서버, 적용 조건이 바뀌면서 코드가 바뀌는 문제 -> 서비스 추상화
: 추상화를 통해 로우레벨의 기술 구현 부분과 기술을 사용하는 인터페이스를 분리, 환경과 세부 기술에 독립적인 접근 인터페이스를 제공
: 템플릿/콜백 패턴은 반복적인 작업흐름과 API 사용 코드 제거함, 기술을 사용하는 코드도 최적화된 핵심 로직에만 집중
- 기술적인 처리를 담당하는 코드가 성격이 다른 코드에 섞여 등장한다.
: 로깅, 감사기능 등 이 섞여서 나옴
: 이런 기술과 비즈니스 로직의 혼재로 발생하는 복잡함을 해결하는 것 -> AOP
: AOP는 애플리케이션 로직을 담당하는 코드에 남아 있는 기술 관련 코드를 깔끔하게 분리해서 별도의 모듈로 관리
b. 비즈니스와 애플리케이션 로직의 복잡함을 상대하는 전략
- 비즈니스 로직은 가장 중요
- 자바의 객체지량 기술이 핵심, 스프링은 단지 객체지향 언어의 장점을 살릴 수 있도록 도와줄 뿐
c. 핵심도구 : 객체지향과 DI
- 기술과 비즈니스로직의 복잡함을 해결하는 공통 키워드는 객체지향 이다.
- DI
: 객체지향 > DI > 서비스추상화, AOP, 템플릿/콜백..
the source of post is Spring of Toby
'Back-End > SpringFrame_1' 카테고리의 다른 글
[Spring] DI_1 (0) | 2016.07.16 |
---|---|
[Spring] AOP_1 (0) | 2016.07.04 |
[Spring]8_4 Skill of Spring (0) | 2016.02.28 |
[Spring]8_1.Definition of Spring - 스프링이란? (0) | 2016.02.28 |
[Spring]8_3.POJO Programming (0) | 2016.02.25 |