01. Spring Framework 개요

CHOISUJIN·2023년 4월 20일
0
post-thumbnail

Spring Framework 란?

동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하는 프레임워크
전자정부 표준 프레임워크(Spring MVC Project 기반 프레임워크)의 기반 기술

☑️ 특징

  1. IOC (Inversion of Control) 제어 반전
  • 컨트롤의 제어권이 개발자가 아니라 프레임워크에 있다 !!!
  • 객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도하며, 만들어둔 자원을 호출하여 사용한다.
  • 객체 생성 new 객채() -> 이제 사용 X, 프레임워크가 생성해준다 : Bean
  1. DI (Dependency Injection) 의존성 주입
  • 설정 파일이나 어노테이션을 통해 객체간의 의존 관계를 설정하여 개발자가 직접 의존하는 객체를 생성하지 않아도 됨! ---> @Autowired : bean으로 등록된 객체 중 타입이 같거나, 상속관계인 bean을 주입해주는 역할
  1. POJO 기반 프레임워크(Plain Old Java Object)
  • 특정 기술이나 라이브러리의 내용을 상속받아 클래스를 구현하지 않고 일반적인 기본 기능만을 가진 순수한 자바 객체 의미!!
  • 특정 클래스에 종속되지 않으므로 가바의 객체지향적 설계가 쉬워짐
  • 코드 길이 감소, 유지보수성 증가, 기존 Java API, 라이브러리 지원에 용이
  1. Spring AOP(Aspect Oriented Programming) 관점 지향 프로그래밍
  • 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 공통으로 필요한는 기능의 경우 해당 기능들을 분리하여 관리함 -> service를 interface/class로 나눠서 관리하는 이유!!
  • 흩어진 관심사 : 소스코드 상에서 계속 반복해서 사용되는 부분들은 유지보수를 어렵게 만든다.

☑️ 동작 구조

  1. web.xml (배포 서술자)
  • WAS(Web Application Server) : 동적 웹(요청에 따라서 응답페이지 생성)에서 사용하는 서버
  • WAS가 실행(배포 시작)될 때 가장 처음으로 읽어들이는 문서
  • 서버 실행 시 초기 설정 내용 또는 설정 내용이 작성된 파일을 읽고 수행하도록 함

    -> DispatcherServlet : 요청/응답을 나눠주는 서블릿
    [Front Controller]
    모든 요청을 앞에서 받아들여 알맞은 Controller로 연결을 해주고
    Controller의 반환 결과에 따라서 알맞은 View을 선택해 클라이언트에게 응답하는 역할

  1. servlet-context.xml : 스프링 설정 xml
  • 컨트롤러에서 jsp로 렌더링하는 것을 처리하는 부분
    == 컨트롤러의 응답을 jsp로 보낼 때 어떻게 처리할 것인가?를 작성하는 부분
  • View Resolver : Controller에서 반환된 문자열 앞/뒤에 접두사(/WEB-INF/views/) 접미사(.jsp)를 추가하여 만들어진 경로의 jsp로 요청을 위임(forward)
    ** redirect:/ -> 최상위로 재요청
  • HandlerMapping : 컨트롤러 객체 매핑

구성 요소 설명 비고
DispatcherServlet 클라이언트의 요청(Request)을 전달 받고, 요청에 맞는 컨트롤러가 리턴 한 결과 값을 View에 전달하여 알맞은 응답(Response)을 생성 web.xml
HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정 Controller
Controller 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴
ModelAndView 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음
ViewResolver 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음 servlet-context.xml
View 컨트롤러의 처리 결과 화면을 생성, JSP나 Velocity 템플릿 파일 등을 View로 사용
profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ

0개의 댓글