스프링이란 무엇인가? 만들어진 이유 존재, 목적 추구하는 가치?
단순히 IoC/DI 를 편리하게 적용하는 단계?
정의하기가 쉽지 않음.
일반적인 라이브러니나 프레임워크는 특정 업무 분야나
한가지 특화된 기술에 목표를 가지고 있다.
But 스프링은 애플리케이션 프레임워크라는 특징이 있음
특정 계층 기술 업무 분야에 국한되지 않는다.
애플리케이션 전 영역을 포괄하는 범용적인 프레임 워크
애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표
스프링의 기원 J2EE 기술 서적에 딸린 예제 코드
로드 존슨의 책에서는 항상 프레임 워크 기반으로 접근하라.
불필요하게 무겁지 않다.
서버 배치 :deploy
스프링은 단순한 톰캣이나 제티에서도 완벽하게 동작
가볍고 단순한 환경에서도 복잡한 EJB와 고가의 WAS를 갖추지 않아도 됨
엔터프라이즈 개발의 근본적인 문제점에 도전해서 해결책을 제시한다는 것
단점으로 지속적이고 안정적인 개발이 계속될지 불확실함
스프링은 도구 일뿐이지 목적을 이해하고 잘활용해야된다.
정의: 경량급 프레임워크인 스프링을 활용해서
엔터프라이즈 애플리케이션 개발을 편하게
엔터프라이즈 개발이 너무복잡해서 실패하는 프로젝트가 많음
근본적인 이유?
엔터프라이즈 시스템이란. 서버에서 동작하며 기업과 조직의 업무를 처리해주는
시스템
순수 비즈니스 로직외에 고려할 사항이 많다.
제거될 수 없는 근본적인 복잡함
복잡함을 효과적으로 상대할 수 있는 전략과 기법이 필요함
가장 먼저 성격이 다른 두 가지 복잡함 분리.
비스니스 로직의 복잡함 / 기술저깅ㄴ 복잡함
기술과 관련되 코드나 규약 등이 코드에 등장한 경우 침투적인 기술이라 함
비침투적인 기술 : 기술의 적용사실이 코드에 직접반영되지 않는다
스프링이 성공하는 이유가 비침투적인 기술 전략임.
비즈니스 로직을 담은 애플리케이션 코드 / 엔터프라이즈 기술 처리 코드 분리
기술에 대한 접근 방식이 일관성이 없고 특정 환경에 종속적임
서비스 추상화.
기술적인 처리를 담당하는 코드가 성격이 다른코드에 섞여서 등장한다 .
AOP
애플리케이션의 주요기능 / 비즈니스 로직 코드 독립적으로 존재
기술적인 부분과 느슨하게나마 연관되는 데이터 처리코드 웹/ 리모트 코드등을 제외 하면
마지막으로 비즈니스 로직 코드를 다루는 코드가 남는다.
비즈니스 로직은 자주 수정되고 중요한 핵심 부분.
비즈니스 로직은 객체 지향기술 그자체..
기술적인 복잡함을 효과적으로 다루게 해주는 기법 DI
POJO 방식으로 개발된 애플리케이션 핵심 로직을 담은 코드를 제공한다. 엔터프라이즈 서비스 기술을..
스프링 기술들을 가능 기술이라 함 PSA:Portable Service Abstraction
Plain Old Java Object
객체지향 설계의 자유로운 적용이 가능한 오브젝트여야만함.
특정 기술규약과 환경에 종속되지 않으면 모두 POJO는 아님
객체지향적 자바 언어의 기본에 충실하게 만들어 져야됨
POJO 가 될 수 있는 조건 그대로 장점이 됨.
스프링 프레임워크와 하이버네이트를 대표적인 POJO 프레임 워크라 할수 잇음
스프링 개발자라면 스프링이 제공하는 PSA 만사용하는게아니라 제공하지않는 기술에대해서도 PSA 적용할 줄 알아야됨
엔ㅇ터프라이즈 서비스 추상화 ..
DI 개방 폐쇄 원칙
핵심기능의 변경
핵심기능의 동적인 변경
오브젝트의 핵심 기능 자체를 바꾸기.
그것도 동적으로..
ex) DAO 를 여러개의 DataSource에 의존하게..
사용자별 독립적인 의존 오브젝트 두개..
데코레이션 패턴..
어댑터 오브젝트..
서비스 추상화 방법임..
필요한 시점에서 실제 사용할 오브젝트 초기화 리소스를 준비하게 해주는 지연된 로딩을 적용하려면 프록시 필요
고정적인 작업 흐름과 그 사이에서 자주 바뀌는 부분을 분리해 만든다.
스코프 제어...
AOP
OOP(객체 지향 프로그래밍 ) AOP는 배타적이 아니다
기존 코드에 영향을 주지않고 부가기능을 적용하는 데코레이터 패턴을 으용
부가기능이 일어나는 부분은 메소드 호출이 일어나는 부분으로 제약..
보통 AOP 구현 방법은 다이내믹 프록시를 이용한 프록시 AOP qkdtlr
AspectJ AOP 툴
다양한 조인포인트 제공.
메소드 호출뿐 아니라 인스턴스생성 필드 액세스 특정 호출 경로를 가진 메소드 호출
스프링이 미리 만들어서 제공하는 AOP 기능 가져다 쓰기
대표적인게 트랜잭션
@Configurable 애노테이션
전담팀을 통한 AOP 적용
전체적인 정책 AOP 위주
AOP의 자유로운 이용
세부적인 AOP 이용
POJO 코드가 기술에 직접 노출되어 만들어 지지 않아야 한다.