15. spring boot
15.1 spring boot
2014년부터 개발되었으며 spring legacy project에 비해서 설정이 매우 간소화됨
WAS(tomcat)가 포함되어 있으므로 서버 설정이 간소화됨
아직 실무에서 많이 사용되지 않고 있지만 향후 spring legacy project를 대체하리라 예상됨
15.1.1 Spring Starter Project 생성
Name : 프로젝트 이름(spring03_boot)
Artifact : spring03_boot
Package : spring03
Boot Version : 최신 버전 2.1.3
SQL : MySQL. JDBC Mybatis 체크
Template Engines : Thymeleaf 체크
Web : Web 체크
15.1.2 Spring boot 프로젝트의 실행 방법
시작 클래스 : 프로젝트이름 + Application.java
tomcat이 내장되어 있음
Run as Spring Boot App
기존에 실행중인 톰캣은 중지시키고 실행시켜야 함
15.1.3 템플릿 엔진
spring boot application에서는 jsp 대신 template을 사용하는 것을 권장하고 있음.
spring boot에서 사용가능한 template에는 여러 종류가 있는데 그 중에서 타임리프(Thyme leaf)를 활용하여 실습
thyme - 백리향
웹 템플릿 엔진
스프링 MVC와의 통합 모듈을 제공하며, 애플리케이션에서 JSP로 만든 기능들을 완전히 대체할 수 있음
타임리프의 목표는 세련되고 잘다듬어진 템플릿을 제공하는 것
15.1.4 jsp를 뷰로 사용하는 방법
jsp를 사용하기 위해서는 추가 작업이 필요함
src/main에 webapp 디렉토리 추가
src/main/webapp
src/main/webapp/WEB-INF
src/main/webapp/WEB-INF/views
application.properties 설정
pom.xml에서 thymeleaf 라이브러리를 주석처리해야 함
15.2 실습예제
15.2.1 pom.xml
<dependencies> 위에 <reposaitories> 추가 (오라클 라이브러리 저장소)
<repositories>
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
</repositories>
<dependencies> 교체
<dependencies>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- 타임리프 템플릿 관련 라이브러리 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- spring boot auto restart(설정, 클래스가 바뀌면 auto restart) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- jsp 라이브러리 -->
<dependency>
<groupId>org.springframework.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- jstl 라이브러리 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- 오라클 라이브러리 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<!-- 스프링 부트용 jdbc 라이브러리 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
15.2.2 src/main/resources/application.properties
15.2.3 Spring03BootApplication.java
15.2.4 HelloController.java
15.2.5 src/main/webapp/WEB-INF-views/hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${message}
</body>
</html>
15.2.6 웹브라우저에서 실행
주소창에 컨텍스트 패스를 입력하지 않음
http://localhost/hello.do
15.2.12 GuestbookController.java
15.2.13 타임리프 활성화
지금부터 실습하는 예제는 타임리프 템플릿을 사용함
application.properties에서 jsp 뷰 설정 주석 처리
pom.xml에서 thymeleaf 라이브러리의 주석 해제
15.2.14 static/css/my.css
15.2.15 static/js/test.js
15.2.16 templates/include/header.html
15.2.18 tempates/list.html
15.2.19 templates/write.html