스프링부트 - #4 web

2020. 11. 17. 13:19개발&TIL/스프링

thymeleaf는 웹 또는 독립적인 실행 환경에서 사용되는 자버 서버 사이드 템플릿 엔진

프로젝트 의존성 구성을 위해 build.gradle을 설정하여 버전 및 의존성을 설정함

Spring-Boot-Community-Web 구조

├── README.md
├── build
├── build.gradle
├── gradle
└── src
   ├── main
   │   ├── java
   │   │   └─── com
   │   │      └── web
   │   │           ├── config
   │   │           ├── controller
   │   │           ├── domain
   │   │           ├── repository
   │   │           └── service
   │   └── resources
   │        │   ├── css
   │        │   ├── images
   │        │   └── js
   │        └── templates
   │           └── board
   └── test
       ├── java
       └── resources
           └── static

스프링 부트 웹 스타터의 의존 설정

  • spring-boot-starter : 스프링 부트를 시작하는 기본적인 설정이 담겨 있는 스타터
  • spring-boot-starter-tomcat : 내장 톰켓을 사용하기 위한 스타터
  • hibernate-validator : 어노테이션 기반의 표준화된 제약 조건 및 유효성 검사 규칙을 표현하는 라이브러리
  • spring-boot-starter-json : jackson 라이브러리 지원하는 스타터
  • spring-web : HTTP 코어 및 Servlet filter, Spring HTTP invoker 등의 라이브러리
  • spring-webmvc : MVC로 디자인된 DispatcherServlet 기반의 라이브러리

도메인 매핑하기

  • 도메인 매핑은 JPA 를 사용하여 DB와 도메인 클래스를 연결 시켜주는 작업
  • @Entity, @Table : 어노테이션을 사용하여 테이블 및 엔티티를 식별
  • @GeneratedValue(strategy = GenerationType.IDENTITY) : 기본 키를 자동 설정하는 어노테이션으로 필드에 설정
  • @Enumerated(EnumType.STRING) : Enum 타입 맵핑용 어노테이션으로 데이터베이스에서 String형으로 저장하겠다고 선언 / 필드 설정
  • @OneToOne(fetch = FetchType.LAZY) : 관계를 1대1로 설정하는 어노테이션으로 필드에 설정

LocalDateTime

  • 자바8에 추가된 기능, 기존 Date, Calendar 등의 부족한 기능을 충족시키도록 추가된 클래스

CommandLineRunner를 사용하여 DB에 데이터 넣기

  • 애플리케이션 구동 후 특정 코드를 실행시키고 싶을 때 직접 구현하는 인터페이스
  • 테슽나 데모 시에 실행/테스트로 편리하게 사용

서버 사이드 템플릿

  • 서버사이드 템플릿이란 미리 정의된 HTML에 데이터를 반영하여 뷰를 만드는 작업을 진행하고
    클라이언트에 전달하는 방식
  • 타임리프, 프리마커, 무스타치, 그루비 템플릿등을 스프링부트 2.0에서 지원

thymeleaf 간단 설명

  • th 네임스페이스를 사용 (xmlns:th="http://www.thumeleaf.org")
  • 'th:text' 등 프로퍼티와 함께 사용하여 내부에 표현된 구문을 대체
  • '@{}' : 기본링크의 표현 구문, 서버의 루트 경로 기준으로 경로를 탐색하여 href의 URL을 대체
  • 'th:each' : 반복 구문 처리로 ${boardList}에 담긴 리스트를 순차 처리
  • <tr th:each="board: ${boardList}"> <td th:text="${board.idx}"></td> </tr>
  • 타임리프 자바 8 날짜 포맷 라이브러리 temporals
  • <td th:text="${temporals.format(board.createdDate, 'yyyy-MM-dd HH:mm')}"></td>
  • temporals 주요 함수
  • ${temporals.format(temporal, 'yyyy-MM-dd HH:mm')} ${temporals.arrayFormat(temporalArray, 'yyyy-MM-dd HH:mm')} ${temporals.listFormat(temporalList, 'yyyy-MM-dd HH:mm')} ${temporals.setFormat(temporalIsSet, 'yyyy-MM-dd HH:mm')}
  • 페이징 처리하기
    • Pageable 객체를 사용하여 원하는 페이징 처리 가능
    • th:with 구문을 사용하여 사용할 변수를 초기화
    • Pageable 객체에서 제공하는 isFirst, isLast 함수를 사용
  • ${...?} 처럼 구문 뒤에 "?"를 붙여서 null 체크 가능
728x90

'개발&TIL > 스프링' 카테고리의 다른 글

스프링부트 - #6 REST  (0) 2020.11.17
스프링부트 - #5 oAuth2  (0) 2020.11.17
스프링부트 - #3 테스트  (0) 2020.11.17
스프링부트 - #2 환경설정  (0) 2020.11.17
스프링 부트 - #1 소개  (0) 2020.11.17