프레임워크 (Framework)

소프트웨어 개발을 위한 기본적인 틀과 구조를 제공하는 도구, 개발자가 반복적으로 해야 하는 작업을 줄이고, 핵심 비즈니스 로직에 집중할 수 있게 해준다.


Spring 특징과 구조


POJO (Plain Old Java Object)

특별한 제약이나 규칙에 종속되지 않는 자바 객체를 의미.

IoC (Inversion of Control)(의존성)

제어의 역전이라고 하며, 객체의 생성과 생명주기를 개발자가 아닌 프레임워크가 관리.

AOP (Aspect Oriented Programming)

관점 지향 프로그래밍으로, 공통 관심사를 분리하여 모듈화하는 프로그래밍 패러다임.

MVC 모델 실행 순서

graph LR;
    classDef default fontSize:14px;
    
    client(["Client"]):::client --"1. Request"--> DispatcherServlet
    DispatcherServlet --"2."--> HandlerMapping["Handler\\nMapping"]
    DispatcherServlet --"3."--> HandlerAdapter["Handler\\nAdapter"]
    HandlerAdapter --"4."--> Controller["Controller"]
    Controller --> Service["Service\\n(Business Logic)"]
    Service --> Repository["Repository\\n(Data Access)"]
    Repository --> DB[("Database")]
    DB --> Repository
    Repository --> Service
    Service --> Controller
    Controller --"5. viewname"--> HandlerAdapter
    DispatcherServlet --"6."--> ViewResolver["View\\nResolver"]
    ViewResolver --"7."--> View["View"]
    View --"8. Response"--> client
    
    style HandlerMapping fill:#666666,color:#ffffff,width:120px,height:60px
    style HandlerAdapter fill:#666666,color:#ffffff,width:120px,height:60px
    style DispatcherServlet fill:#666666,color:#ffffff,width:150px,height:60px
    style ViewResolver fill:#666666,color:#ffffff,width:120px,height:60px
    style Controller fill:#666666,color:#ffffff,width:120px,height:60px
    style View fill:#666666,color:#ffffff,width:120px,height:60px
    style Service fill:#666666,color:#ffffff,width:120px,height:60px
    style Repository fill:#666666,color:#ffffff,width:120px,height:60px
    style DB fill:#666666,color:#ffffff,width:100px,height:60px
    style client fill:#666666,color:#ffffff,width:100px,height:60px

Handler Mapping

Handler Adapter

View Resolver



@RequestMapping