[Spring] spring boot
programming/spring

[Spring] spring boot


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