1. 프레임워크 개념

   1-1. 등장 배경

     아키텍처에 해당하는 골격 코드. 애플리케이션을 개발하는 개발에서 기본이 되는 뼈대나 틀을 제공한다.

     개발자에게 모든 것을 위임하는 것이 아니라 애플리케이션의 기본 아키텍처는 프레이워크가 제공하고,

     뼈대에 살을 붙이는 작업만 개발자가 하는 것이다.

   1-2. 장점

     빠른 구현 시간, 쉬운 관리, 개발자들의 역량 획일화, 검증된 아키텍처의 재사용과 일관성 유지

   1-3. 자바 기반 프레임워크 종류

     - Struts : UI 레이어에 중점을 두고 개발된 MVC 프레임워크

     - Spring(MVC) : MVC 아키텍처를 제공하는 UI 레이어 프레임워크. Struts처럼 독립된 프레임워크는 아님

     - Spring(IoC, AOP) : 컨테이너 성격을 가지는 프레임워크

                                       스프링의 IoC, AOP 모듈 이용해 컨테이너에서 동작하는 엔터프라이즈 비즈니스 컴포넌트

                                       개발 가능

     - Hibernate : 완벽한 ORM(Object Relation Mapping) 프레임워크

                           SQL 명령어를 프레임워크가 자체적으로 생성해 DB 연동을 처리

     - JPA : Hibernate를 비롯한 모든 ORM의 공통 인터페이스를 제공하는 자바 표준 API

     - Ibatis : 개발자가 작성한 SQL 명령어와 자바 객체(VO or DTO)를 매핑해주는 기능 제공

                   기존에 사용한 SQL 명령어 재사용하여 개발하는 차세대 프로젝트에 유용하게 적용 가능

     - Mybatis : Ibatis에서 파생된 프레임워크. 기본 개념과 문법은 Ibatis와 동일

 

2. 스프링 프레임워크

   2-1. 스프링 탄생 배경

    2004년 로드 존슨이 만든 오픈소스 프레임워크이다.

    스프링 이전의 자바 기반 엔터프라이즈 애플리케이션은 대부분 EJB(Enterprise Jaba Beans)로 개발되었으나,

    EJB 컨테이너는 스펙이 복잡하여 개발 및 유지보수에 복잡하고, 실행하려면 값비싼 WAS가 필요하다.

    => 평범한 POJO를 사용하면서도 복잡하지 않고 비용을 절감할 수 있는 프레임워크가 대두하게 됨

 

* POJO (Plain Old Java Object)

평범한 옛날 자바 객체. 대표적으로 POJO가 아닌 클래스는 Servlet이다.

POJO가 아닌 클래스는 개발자 마음대로 만들 수 없으며, 요구하는 규칙에 맞게 클래스를 만들어야 실행할 수 있다.

 

   2-2. 스프링 특징

    - 경량 : 개발과 실행, 배포가 빠르고 쉬움. POJO 형태 객체 관리가 쉬움

    - 제어의 역행(IoC) : 낮은 결합도와 높은 응집도. 객체 생성을 자바 코드로 직접 처리하지 않고 컨테이너가 대신

                              처리한다. 객체-객체 사이의 의존관계 역시 컨테이너가 처리한다. (유지보수 편리)

    - 관점지향 프로그래밍(AOP) : 반복해서 등장하는 공통 로직을 분리함으로서 응집도를 높혀 개발하는 것

    - 컨테이너 : 특정 객체의 생성과 관리를 담당하며, 객체 운용에 필요한 다양한 기능을 제공한다.

                    일반적으로는 서버 안에 포함되어 배포 및 구동된다. (Servlet 컨테이너, EJB 컨테이너 등)

   2-3. IoC 컨테이너

     스프링을 이해하는데 가장 중요한 개념.

    컨테이너는 자신이 관리할 클래스들이 등록된 XML 설정 파일을 로딩해 구동하고, 클라이언트 요청이 들어오는

    순간 XML 설정 파일을 참조하여 객체를 생성하고 객체 생명 주기를 관리한다.

    개발자가 어떤 객체를 생성할지, 객체간의 의존관계 등의 작업들을 코드로 처리하지 않고 컨테이너로 처리하는

    것을 의미한다. (낮은 결합도)

 

    대부분의 IoC 컨테이너는 각 컨테이너에서 관리할 객체들을 위한 별도의 설정 파일이 있다.

    스프링에서는 BeanFactory와 이를 상속한 ApplicationContext 두 개 유형의 컨테이너를 제공한다.

    - BeanFactory : 설정 파일에 등록된 <bean> 객체 생성하고 관리하는 기본 컨테이너 기능만 제공한다.

                             클라이언트 요청에 의해서만 bean 객체 생성되는 방식을 사용하기 때문에, 일반적인 스프링에서는

                             BeanFactory를 사용할 일은 없다.

    - ApplicationContext : 기본 객체 관리 기능 외 트랜잭션 관리, 메시지 기반 다국어 처리 등의 기능을 지원한다.

                                         컨테이너 구동 시험에 <bean> 등록된 클래스들 객체를 생성하는 즉시 로딩 방식으로 동작한다.

                                         웹 애플리케이션 개발도 지원하므로 대부분의 스프링 프로젝트는 해당 컨테이너를 이용한다.

  2-4. 스프링 XML 설정

    스프링 컨테이너는 bean 저장소에 해당하는 XML 설정 파일을 참조해 bean 생명 주기를 관리하고 서비스를 제공한다.

  

+ Recent posts