一、SpringBoot 简介

简化 Spring 应用的初始搭建以及开发过程。从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。

以前要手动搭建 ssm 框架的时候,要配置一堆东西,麻烦的一批。用 SpringBoot 搭建的话,很多东西都自动配置好了,爽的一批。

二、通过 SpringBoot 创建工程

方式一:浏览器访问 https://start.spring.io/,填写项目信息,点击 Generate Project 将项目文件下载到本地,导入IDE即可。

方式二:如果使用 IntelliJ IDEA,可以直接在里面创建工程(太方便了⑧),本文用的是此方法。

首先运行 IntelliJ IDEA,选择 Create New Project,在左侧选择 Spring Initializr,下一步(其实也是从 Spring 官网上创建,不过集成到 IDE 里了,更加方便)

选择要导入的包(看右侧 Selected Dependencies)

  • DevTools:方便 debug 的一个工具,可以配置热加载,省的每次修改代码后都要重启服务

  • Web:集成了 Tomcat 和 SpringMVC

  • MySQL:数据库连接驱动

  • MyBatis:顾名思义

注:我打算使用阿里的数据源,所以没有勾选JDBC,想用JDBC的可以勾选。

设置项目名称及存放位置

至此就创建好了。根据勾选的依赖,它会自动帮你生成 pom.xml 的内容。等待 maven 导包完成后,工程目录如下图所示:

  • SpringbootSsmApplication 是程序运行的入口
  • application.properties 是程序的配置文件(默认是空的)
  • resources/static 用于存放网站静态文件
  • resources/templates 用于存放网站模板文件 (要引入thymeleaf模板引擎)
  • test目录下放置测试单元

手动打开 pom.xml ,引入阿里巴巴数据库连接池

pom.xml
1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>

因为创建的是 web 项目,还需要导入下面的包,让其支持 jsp文件的解析和 jstl 表达式。

注:如果不引入 jsp 解析器,跳转 jsp 的时候会直接变成下载 jsp 文件,无法直接显示页面。

pom.xml
1
2
3
4
5
6
7
8
9
10
11
<!-- tomcat的jsp解析器 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

<!-- jstl标签-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>

由于我习惯于把 Mybatis 的 Mapper 和其 interface 类放在同一个 dao 包下,并且 IDEA 默认不编译 Resources 以外的 XML 文件,如果 MyBatis Mapper 放在 Resources 以外,需要加上以下代码让 IDEA 编译 (在 <build> 块里面加)

pom.xml
1
2
3
4
5
6
7
8
9
10
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>

在 main 下创建 webapp 文件夹用于存放网站文件,并在 IDEA 里设置其为网站资源目录(不设置的话 IDEA 不知道,你没法在右键菜单里新建 jsp 等等的文件..)

程序入口的 @SpringBootApplication 注解会自动帮我们扫描当前包下及其子包里的 bean (使用 @Component@Controller@Service@Repository 注解了的类),所以我直接在该入口所在的包建立三层结构的子包

基本结构就系这样,下面开始配置 MyBatis 和 SpringMVC。

三、配置工程

SpringBoot 主张无 XML 配置,所有的配置都在 application.properties 搞定(也支持 ymal 语法来配置,把配置文件的后缀 .properties 改成 .yml 就好,这里使用 .properties 配置)。

直接上代码

application.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#阿里巴巴数据源
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.database=mysql

#MyBatis
mybatis.mapper-locations=classpath:com/crazykid/springboot/web/springbootssm/dao/*.xml
mybatis.type-aliases-package=com.crazykid.springboot.web.springbootssm.domain

#SpringMVC
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
#url-pattern
server.sevlet-path=/

#logging.level.root=debug

注:可能会遇到 com.mysql.jdbc.Driver 报红的情况(找不到相应的包),解决方案是到 pom.xml 把 MySQL 的连接驱动的 <scope> 去掉,这个是 SpringBoot 默认加的。

<scope>runtime</scope> 表示 在运行和测试系统的时候需要,但在编译的时候不需要。

pom.xml
1
2
3
4
5
6
> <dependency>
> <groupId>mysql</groupId>
> <artifactId>mysql-connector-java</artifactId>
> <!--<scope>runtime</scope> 这个不要-->
> </dependency>
>

回去程序主入口,添加 @MapperScan("com.crazykid.springboot.web.springbootssm.dao") 注解,这个扫描的是 Mybatis Mapper 的 interface 接口。

SpringbootSsmApplication.java
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.crazykid.springboot.web.springbootssm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.crazykid.springboot.web.springbootssm.dao") //<--新增
public class SpringbootSsmApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootSsmApplication.class, args);
}
}

至此配置完成。

四、测试

请参考 这篇博文 的测试部分,大同小异。

源码下载:springboot-ssm.rar