스프링 프레임워크
자바 개발을 편리하게 해주는 경량급 오픈소스 애플리케이션 프레임워크
개발을 위해 필요한 기능들을 포괄적으로 제공
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