1. 前言
前面文章整合过了ssm的,是相对spring的,不过在现在微服务流行之际,为了往后面的springcloud发展学习,先学习一下springboot,在学习的过程中用spring boot+spring mvc+mybatis进行搭建接口平台。
2. 简介
spring boot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。(来自百度百科)。
2.1 spring boot特点
创建独立的Spring应用程序
嵌入的Tomcat,无需部署WAR文件
开箱即用,提供各种默认配置来简化项目配置
没有冗余代码生成和XML配置的要求
2.2 个人理解
在我看来,spring boot并不是什么新的框架,它只是默认配置了很多框架的使用方式;类似于maven整合了jar,而spring boot整合了很多的框架。从本质上来讲,spring boot就是spring,它做了那些你需要去做的复杂配置。它使用“习惯优于配置”的理念让你的项目快速运行起来。
2.2 回顾一下spring web项目步骤
配置web.xml,加载spring和spring mvc
配置数据库连接、配置spring事务
配置加载配置文件的读取,开启注解
配置日志文件
......
配置完成后部署tomcat调试...
2.3 spring boot项目
只需要非常少的几个配置就可以迅速方便的搭建起来一套web项目或者是构建一个微服务!下面就让我们一起来领略spring boot的魅力
3. 项目搭建
整个项目使用maven构建,有关idea集成maven、jdk、tomcat等可翻我上一篇文章。
3.1 在这里使用spring提供的SPRING INITIALIZR工具来产生基础项目。
选择构建工具maven、语言java、版本1.5.10(支持jdk1.7)
initializr.png
点击Generate Project下载项目压缩包
解压项目,导入进idea,说一下简要步骤
File -> New -> Project from Existing Sources
选择你解压的项目文件夹
点击OK
选择Import project from external model并选择Maven,点击Next到底为止。
3.2 编译错误
若在项目编译过程中,遇到[Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8]这个错误,可按照如下更改,这里我统一改为了1.7
1,Project Structure里确认两个地方:Project sdk以及project language level
2,Project Structure->Modules里Sources里的Language level
3,Preferences->java Compiler->Per-module bytecode Version
至此基础项目准备完毕,运行一下项目
image.png
看见Spring Boot这个图案证明基础项目搭建成功。
4. 编写代码
4.1 项目结构
项目结构.png
系统整个架构为springboot+springmvc+mybatis,restful的接口风格。只是一个示例项目,也没有进行模块分包。整个结构的话还是controller、service、dao的三层结构。在这里面dao层多写了一个接口和实现。对于service层没有写接口,因为我觉得简单的业务没必要写接口(包括这里的dao也是)。
我也一直在思考,对于service和dao层,到底需不需要接口和实现。网上查了一些,有些是瞎扯了一堆“接口和实现分离”、“面向接口编程”、“设计模式”、“解耦”等,但是也没说出个所以然;有些是说没必要分离,或者看系统架构。自己也是经历不多,不知道确切的区别或者说有什么效率上的区别。这个待我日后慢慢积累,有机会咨询长者学习,或者评论区静待大神的解答。
4.2 项目配置
springboot 遵循"习惯优于配置"原则,使用Spirng Boot只需很少的配置,大部分时候可以使用默认配置。
使用INITIALIZR工具创建的springboot项目,默认会在resource目录下创建application.properties文件,另外也可以使用yml类型的配置文件代替properties文件。在这里我是使用的是yml文件。
application.yml
spring:
datasource:
# 驱动配置信息
url: jdbc:mysql://localhost:3306/spring_boot?useUnicode=true&characterEncoding=utf8
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
# 连接池的配置信息
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
这里主要就是配置了阿里的druid连接池信息。上面的就是类型和驱动这些,然后就是mysql数据库的url、用户名和密码,相应改成自己的就行。下面的是druid的参数配置项,这里随便设置了一些,具体可详查Druid。
mybatis-config.xml
/p>
"http://mybatis.org/dtd/mybatis-3-config.dtd">
这个配置主要就是关于mybatis的配置了,这里就提两点,一个是setting里面的logImpl配置,可以把执行的sql语句打印在控制台,便于排查sql错误;二个是使用typeAliases标签元素来对类型进行别名控制,也就是给具体的实体类一个别名,不用写完整路径。具体使用在后面mapper中会讲到。
以上就是这个项目目前用到的两个配置了,是不是比起spring来说简便多了。
pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.bgy
springboot
0.0.1-SNAPSHOT
jar
springboot
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
1.5.10.RELEASE
UTF-8
UTF-8
1.7
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-web
spring-boot-starter-logging
org.springframework.boot
org.springframework.boot
spring-boot-starter-log4j2
org.springframework.boot
spring-boot-starter-web
1.3.6.RELEASE
com.alibaba
druid
1.0.11
mysql
mysql-connector-java
org.mybatis.spring.boot
mybatis-spr