[Java][Spring] Spring 계층, 기본

Woong·2022년 1월 4일
0

Java

목록 보기
6/21

Presentation Layer

  • 사용자와 상호작용을 담당
  • 사용자의 요청을 분석/응답

Business Logic Layer

  • 기능 수행
  • 트랜잭션 수행

Data Access Layer

  • 데이터의 저장, 조회 담당
  • 데이터베이스와 연동하여 작업

Component 는 Bean 이라고 볼 수 있음

  • Controller (Presentation Layer)
  • Service (Business Layer)
  • Repository (Persistence/DAO)
    • 이 셋이 모두 Component 의 하위 어노테이션
  • <context:component-scan base-package="패키지명"/>
    • 패키지명 하위 패키지를 검색해 @Component 어노테이션을 포함하는 모든 클래스를 빈으로 자동 등록
    • 단, 의존성 관계 등록은 따로 하지 않음

@Autowired

  • 컴포넌트간 의존관계를 자동으로 적용.

Spring MVC

  • Business Logic 과 Presentation Logic 을 분리하는 것이 주 목적.

Model

  • DB 등 데이터 저장소와 연동, 사용자가 입/출력 데이터를 다루는 역할
  • CRUD 를 하나의 작업으로 묶는 트랜잭션을 다루기도.
  • DAO 클래스, Service 클래스에 해당

View

  • 출력할 화면을 만드는 역할
  • HTML, CSS, JS 사용.
  • Html, JSP, Thymeleaf 등으로 작성

Controller

  • 클라이언트의 요청에 대해 실제 업무를 수행하는 모델 컴포넌트를 호출
    • 클라이언트가 보낸 데이터를 가공해서 모델 호출시 전달
    • 모델이 업무 수행 완료시 결과를 뷰에 전달
      • 클라이언트 요청에 대해 모델, 뷰를 결정하여 전달
  • Servlet, JSP 등을 사용하여 작성

Front Controller 패턴

  • 퍼사드 패턴이라고도 함
  • 프레임워크 차원에서 내장 (모델2 아키텍처, Front Controller 전부)
  • 클라이언트가 보낸 요청을 받아서 "공통적인" 작업을 먼저 수행
    • 전처리하고 다른 Controller 에게 작업 위임
    • 인증, 권한 체크 등 "모든 요청에 대한 공통 처리 로직" 수행
  • 클라이언트 -> 프론트 Controller -> Application Controller -> View

DispatcherServlet ★★★

  • 클라이언트의 요청을 받아 Controller 에 전달, 리턴 결과를 View에 전달

HandlerMapping

  • URL, 요청 정보 기준으로 어떤 핸들러 객체 사용할지 결정.
  • DispatcherServlet 은 하나 이상의 핸들러 매핑을 가질 수 있음.
  • 개발자가 건드릴 필요는 없음

ModelAndView

  • Controller 처리한 데이터와 화면 정보를 보유 (Controller 가 리턴)

View

  • Controller 의 처리 결과 화면에 대한 정보 보유

ViewResolver

  • Controller 가 리턴한 뷰 이름을 기반으로 Controller 처리 결과를 생성할 뷰 결정.

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping

  • Spring 4.3 이후 Controller 에서 이런 어노테이션 사용 가능.

redirect

  • return "redirect:main"
    • "redirct:" 로 시작하는 문자열 리턴하면 리다이렉트

constroller 인자

  • @RequestParam("필드명") String id
    • 이런식으로 인자 받아서 파라미터 받아올 수 있음.

REST API

  • Representational Safe Transferful API
    • HTTP URI + HTTP Method
    • HTTP URI 로 제어한 자원(리소스)를 명시
  • HTTP Method(GET,POST,PUT,DELETE) 로 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처.
    • POST 는 create(insert)
    • GET 은 read(select)
    • PUT 은 update, create
    • DELETE 는 delete
  • 똑같은 URI 을 쓰더라도 GET/POST/PUT/DELETE 요청으로 구분하면 크게 단순화 가능

Jackson ★★★★★★★★

  • Java 오브젝트 <-> JSON 컨버전해주는 라이브러리
  • 브라우저에서 json 으로 전송하면 backend에서는 java 오브젝트로 바뀌게 됨.
  • @RequestBody, @ResponseBody 로 Java 객체 형태로 주고받을 수 있음
    • ex) 메소드에 @ResponseBody 주고 java 객체 리턴하면 json 형태로 리턴해줌
    • @RequestBody 는 메소드 파라미터로 받고.

0개의 댓글