스프링부트 - #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 |