HolaJun

35 object(s)
 

Spring기본이해

Spring Framework

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크

스프링을 쓰는 이유


특징


주요 기술

  1. POJO(Plain Old Java Object)
    • 단순히 평범한 자바빈즈(JavaBeans) 객체.
    • 별도로 종속되지 않는 자바 객체를 통칭하여 의미.
    • 처음에 javax.ejb 인터페이스를 상속받지 않은, 무거운 EJB와는 반대로 경량의 자바 객체를 지칭하는 용어로 소개.
    • 특정 인터페이스를 구현하거나 상속받을 필요가 없어 기존의 라이브러리 등을 지원하기 용이하고, 객체가 가벼움.
  2. IoC(Inversion Of Control)

    • 스프링에서 객체를 생성하고 조립하는 컨테이너(Container)로, 컨테이너를 통해 생성된 객체를 Bean(=Object)이라 부름.
    • Bean Factory, Application Context라고도 칭하나, 일반적으로 Application Context를 말함.
    • Bean Factory와 Applicaton Context는 각각 BeanFactory, ApplicationContext 두 개의 인터페이스 로정의.
    • 컨테이너가 본격적인 IoC 컨테이너로서 동작하려면 POJO 클래스와 설정 메타정보가 필요.
    • 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출.
  3. DI(Dependency Injection)

    • 의존성 주입. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우, 프레임워크가 서로 연결시켜줌.
    • 부품들을 생성하고, 제품을 조립해주는 공정과정을 대신해 주는 라이브러리 (역할자)
    • 개발 핵심 처리 루틴의 수정 없이 제품(객체)를 다른 제품(객체)로 쉽게 대체하여 생성 가능하도록 하는 역할을 함.
    • 명세서에 따라서 자동적으로 부품을 활용하여 제품을 조립.
    • 생성하기 원하는 객체를 명세서(XML)에 기술하고, 그 부품과 의존성(Dependency)들을 보관하는 일을 처리. 그러한 데이터를 보관하는 공간을 컨테이너라고 함.(IoC 컨테이너)
  4. AOP(Aspect Oriented Programming)

    img

    (출처: http://ooz.co.kr/193?category=818548)

    • 관점 지향 프로그래밍.
    • 클래스들이 공통으로 갖는 기능이나 절차 등을 하나의 것으로 묶어 빼내어 별도로 관리하려는 목적.
    • 서비스 모듈이 자신의 주요 관심 사항(핵심 기능)에 대한 코드만 포함하고, 그 외의 관심 사항은 모두 Aspect로 옮겨지므로 코드가 깔끔해지고, 가독성도 높아짐.
    • 부가적인 업무의 예로 로그인(Login), 트랜잭션(Transaction), 보안(Security), 캐싱(Caching)과 같은 내부 처리(비지니스, Business) 작업이 있다.


Life Cycle

img

  1. 브라우저(클라이언트)가 서버에 요청을 하면(ex.날씨) DispatcherServlet이 요청을 받아, 가장 먼저 HandlerMapping에 다시 요청함.
  2. HandlerMapping은 요청받은 것에 가장 적합한 Controller를 찾아내서 DispatcherServlet으로 반환함.
  3. Controller를 반환받은 DispatcherServlet은 다시 HandlerAdapter에게 요청을 보내고, HandlerAdapter은 해당하는 Controller에 적합한 Method를 요청하고, Model이라는 데이터로 반환함. 다시 DispatcherServlet에 반환함.
  4. 반환받은 정보를 ViewResolver에 요청함.
  5. ViewResolver은 요청받은 정보에 적합한 View(Jsp 문서)를 찾아 DispatcherServlet으로 반환함.
  6. DispatcherServlet은 반환 받은 View 문서를 사용자에게 반환함.


디렉터리 구조

img