#1. Framework?
프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는
클래스와 라이브러리의 모임
#2. Spring Framework의 등장 배경
EJB를 사용하면 애플리케이션 작성을 쉽게 할 수 있다.
Low Level의 트랜잭션이나 상태 관리, 멀티 쓰레딩, 리소스 풀링과 같은 복잡한 Low Level의 API를 이해하지 못하더라도 아무 문제 없이 애플리케이션을 개발할 수 있다.
하지만, EJB의 반영은 어렵다.
코드 수정 후 반영하는 과정 자체가 거창하여 기능은 좋지만 복잡한 스펙으로 인해 개발의 효율성이 떨어진다.
애플리케이션을 테스트하기 위해서 반드시 EJB 서버가 필요하다.
웹사이트가 점점 커지면서 엔터프라이즈급의 서비스가 필요하게 됨
세션 빈에서 Transaction 관리가 용이함
로깅, 분산처리, 보안 등
자바 진영에서는 EJB가 엔터프라이즈급 서비스로 각광을 받게됨
EJB 스펙에 정의된 인터페이스에 따라 코드랄 작성하므로 기존에 작성된 POJO를 변경해야 함
컨테이너에 배포를 선행해야 테스트가 가능해 개발 속도 저하
배우기 어렵고, 설정해야 할 부분이 많음
EJB는 RMI를 기반으로 하는 서버이므로 무거운 Container
Rod Johnson이 EJB를 사용하지 않고 엔터프라이즈 어플리케이션을 개발하는 방법을 소개
AOP나 DI같은 새로운 프로그래밍 방법론이 가능
POJO
로 전언적인 프로그래밍 모델 가능
스프링의 모태
점차 POJO + 경량 프레임워크 사용 시작
POJO(Plain Old Java Object)
특정 프레임워크나 기술에 의존적이지 않은 자바 객체
특정 기술에 종속적이지 않기 때문에 생산적, 이식성 향상
Plain : componenet interface를 상속받지 않는 특징
Old : EJB 이전의 java class를 의미
경량 프레임워크
EJB가 제공하는 서비스를 지원해 줄 수 있는 프레임워크 등장
Hibernate, JDO, myBatis, Spring
POJO + Framework
EJB 서버와 같은 거창한 Container가 필요 없다
오픈소스 프레임워크라 사용이 무료
각종 기업용 어플리케이션 개발에 필요한 상당히 많은 라이브러리 지원
스프링 프레임워크는 모든 플랫폼에서 사용이 가능하다.
스프링은 웹 분야 뿐만 아니라 어플리케이션 등 모든 분야에 적용 가능한 다양한 라이브러리를 가지고 있다.
#3. Spring Framework
Spring Framework는 자바로 Enterprise Application을 만들 때 포괄적으로 사용하는 Programming 및 Configuration Model을 제공해주는 Framework
Application 수준의 Infra Structure 제공
즉, 개발자가 복잡하고 실수하기 쉬운 Low Level에 신경 쓰지 않고 Business Logic 개발에 전념할 수 있도록 해준다.