스프링 프레임워크

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

  • 개발을 위해 필요한 기능들을 포괄적으로 제공

  • POJO(Plain Old Java Object) 프레임워크 - 특정 라이브러리를 사용할 필요가 없어 개발이 쉽다.

  • AOP(Aspect Oriented Programming) 관점지향 프로그래밍 지원

  • DI(Dependency Inject) 의존성 주입 지원

  • IoC(Inversion Of Controller) 제어의 역전 지원 - 컨트롤 제어권이 개발자가 아닌 프레임워크에 있다.

    • 객체의 생성부터 생명주기를 관리하고 제어해주는 것을 말한다.
    • 제어권이 스프링 프레임워크로 넘어오면 DI, AOP 등을 가능하게 한다.

스프링 부트

  • 스프링 프레임워크에서 사용하는 프로젝트를 간편하게 Setup 할 수 있는 서브 프로젝트이다.
  • 내장 톰캣을 사용할 수 있다.
  • 번거로운 개발 세팅이 없다.

구조

Maven(POM), Gradle(build.gradle)
Controller - 클라이언트 요청을 비지니스 로직으로 분기처리 담당, Dispatcher 역할
Servlet - 동적 웹 프로젝트를 개발 시 사용자의 요청과 응답을 처리해주는 역할
ModelAndView - 컨트롤러가 처리한 결과와 그 결과를 보여줄 View 에 관한 정보를 담고 있는 객체
ViewResolver - View 관련 정보를 갖고 실제 View 를 찾아주는 역할
View - 컨트롤러가 처리한 결과값을 보여줄 View 를 생성

DispatcherServlet

  • 리퀘스트를 받는 관문, 실제 처리할 컨트롤러에게 전달
  • 결과값을 받아 View 에게 전달하여 응답 생성을 할 수 있도록 흐름을 제어

HandlerMapping

  • 리퀘스트 URL, 컨트롤러에게 각각 역할 부여

Spring Container

  • 객체의 생명주기를 관리하며 생성된 인스턴스에게 추가적인 기능을 제공하도록 한다.
  • BeanFactory, ApplicationContext