Low Level의 API를 이해하지 못하더라도 편하게 애플리케이션 개발을 원함(단순 반복도 많음)
-> EJB가 생김(Enterprise JavaBean)
-> EJB는 복잡한 스펙으로 개발의 효율성이 떨어짐.RMI 기반
-> 웹사이트도 점점 커짐. 엔터프라이즈급 서비스 필요
-> EJB를 사용하지 않고, 엔터프라이즈 어플리케이션을 개발하는 방법을 만듦
-> AOP,DI같은 프로그래밍 방법론 가능, POJO로 전언적인 프로그래밍 모델 가능해짐
-> 점점 POJO + 경량 프레임워크 사용하기 시작함
-> 경량 프레임워크로 Hibernate, JDO, iBatis(MyBatis), Spring이 생겨남
거창한 컨테이너 필요 없음. 오픈소스 프레임워크라 무료. 모든 플랫폼에서 사용 가능.
JEE가 제공하는 다수의 기능 지원 중. (DI, AOP같은 기능도 지원중)
(1) POJO (Plain Old Java Object) = 오래도니 자바 오브젝트(직독직해)
특정한 자바 모델이나 기능,프레임워크를 따르지 않는 순수한 자바 객체.
(2) PSA = portable service abstraction = 일관성 있는 서비스 추상화
환경 변화에 영향을 안받고 일관된 방식으로 접근환경을 제공하는 추상화 구조.
즉, 잘 구현된 인터페이스를 의미.
다른 기술로 바뀌어도 나의 코드가 바뀌지 않게 작성하는 것
(3) IoC/DI
BeanFactory
클래스를 통해 객체를 생성하고 전달.(Bean 등록, 생성, 조회, 반환 관리)
Lazy-loading(지연로딩) = 메서드나 클래스가 빈 로딩 요청을 받는 시점에 인스턴스를 만들고 로딩하는 방법
ApplicationContext
BeanFactory를 상속받음. 부가 서비스를 추가로 제공
Pre-loading(사전로딩) = 모든 빈들과 설정 파일들이 ApplicationContext에 의해 로드 요청이 될 때 인스턴스로 만들어지고 로드된다.
IOC에 대해
(1) Dependency Lookup -> JNDI Lookup
DL은 (의존성 검색)을 의미한다.
<사용법>
1. ApplicationContext 이용
ApplicationContext context;
context.getBean(UserRequest.class);
2. ObjectFactory 이용
3. ServiceLocatoryFactoryBean 이용
4. Lookup 어노테이션 사용
5. GetMapping 어노테이션 사용
(2) Dependency Injection
DI는 (의존성 주입)을 의미한다.
ㄱ. Setter Injection
ㄴ. Constructor Injection
ㄷ. Method Injection
(4) AOP = Aspect-Oriented Programming = 관점 지향 프로그래밍
공통 부분과 핵심 기능을 나눠주는 역할.
공통적으로 반복/중복되는 부분을 분리함으로써 유지보수 및 재사용성 높아짐.
핵심 기능 개발에 집중 가능
(용어 설명)
RMI : Remote Method Invocation, 원격 매소드 호출을 의미. 분산되어 존재하는 객체 간의 메시지 전송을 가능케 하는 프로토콜.
JEE : Java Enterprise Edition. 자바 EE 플랫폼은 자바 SE 플랫폼을 기반으로 그 위에 탑재됩니다. 자바 EE 플랫폼에서는 대규모, 다계층, 확장성, 신뢰성 그리고 보안 네트워킹 어플리케이션의 개발과 실행을 위한 API 및 환경을 제공하고 있습니다.
(1) Core : 스프링 프레임워크의 핵심기능. (주요 컴포넌트 = Bean Factory)
(2) Context : Bean Factory를 상속하는 ApplicationContext를 구현.
Application 생명주기 이벤트, 유효성 검증 등을 지원함.
Email, JNDI접근, EJB 연계.. 다수의 엔터프라이즈 서비스 제공
(3) AOP : Interceptor, point cut 사용으로 AOP 지원
(4) DAO : JDBC 코딩 부분 줄여줌. 트랜잭션 관리 기능도 제공
(5) ORM : MyBatis, Hibemate, JPA등 과의 통합 제공
(6) Web : 멀티파트 file upload와 같은 기본 웹 기능을 제공함.
(7) Web MVC : 웹 MVC 프레임워크를 제공( REST 서비스 구현도 포함됨)