写在前言:
学习前后端分离也有一段时间了,基于Vue + Spring Boot + mybaits + webpack2
恰逢得知Spring Boot已经升级到2.0,闲来无事研究了下Spring Boot 2.0
整合了一个Spring Boot2.0 + Mybatis 的demo 并成功运行。
搭建期间也遇到很多坑,好在一一解决~
本文主要分享 SpringBoot2.0 和 mybatis 整合搭建的过程 ~
首先聊一下Spring Boot 和 Spring 的区别特征
- Spring Boot可以建立独立的Spring应用程序;
- Spring Boot内嵌例如Tomcat、Jetty和Undertow等这样常见的部署容器,可以直接点击run或者debug按钮运行。(琢磨了好久怎么启动SpringBoot项目怎么启动,囧~);
- 无需如传统Spring搭建需要成吨繁琐的XML配置文件,转而使用更加简洁的yml配置文件;
- 可以自动配置Spring;
- 提供了部分现有功能,如量度工具,表单数据校验和一些外部配置这样的三方功能;
- 提供的POM可以简化Maven的配置;
其次聊一下Spring Boot 2.0 和 Spring Boot 1.0 的区别
- SpringBoot 2基于Spring5和JDK8,而Spring 1x则用的是降低版本,带来的为可能是你的应用服务必须支持JDK8
- 使用SpringBoo2,建议使用较新的Maven版本,以及较新的JDK,尤其是IDE工具,以免Maven在IDE里的视图报出警告信息
- MVC部分,有些定制类改动了,比如WebMvcConfiguer,由抽象类改为接口,这是因为JDK8对接口有新的支持形式
- JPA中,findById 返回了一个Optional对象,改动较大,会直接影响所有业务代码
- SpringBoot配置,web应用的ContextPath 配置属性已经改动,另外配置文件的中文可以直接读取,而不需要转码。另外,自动装配里Boot提供的JavaVersion类报名改动了。根据jdk版本自动装配的需要调整代码
- Sagger UI变化较大
- Acutator,本章SpringBoot1.x和2变化较大,默认情况,不再启用所有监控,另外编写自己监控信息,完全需要重写,HealthIndicator,EndPoint 变化很大
环境/版本一览:
- 开发工具:IntelliJ IDEA 2018.1.3 x64
- http请求测试工具:Postman
- Spring Boot : 2.0.1.RELEASE
- jdk:10.0.0.1
- maven:3.3.9
- alibaba Druid 数据库连接池:1.1.9
额外功能:
- PageHelper 分页插件
- mybatis generator 自动生成代码插件
开始搭建:
创建项目
- 我用的是JDK10,不同版本的同学可以选择自己对应的JDK版本
- 添加基础的依赖
依赖文件,各位同学按照POM文件补齐所需依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wiki</groupId>
<artifactId>springboot2-mybatis-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot2-mybatis-demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>10</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>