SpringBoot2.0 教程
目录
一、 Springboot 概论...............................................................................................................................1
二、快速入门............................................................................................................................................3
三、 Web 开发......................................................................................................................................... 8
四、 数据访问........................................................................................................................................20
五、 事务管理........................................................................................................................................48
六、 日志管理、代码简化....................................................................................................................63
七、 缓存支持........................................................................................................................................78
八、 热部署............................................................................................................................................80
九、 监控管理........................................................................................................................................82
十、 性能优化........................................................................................................................................87
十一、 2.0 版本新特性..........................................................................................................................89
十二、 其他内容....................................................................................................................................91
十三、 源码分析....................................................................................................................................99
微信公众号..............................................................................................................................................99
本教程涉及代码下载地址:https://download.csdn.net/download/zpcandzhj/10683043
博客地址:http://www.bigbirditedu.com/
关注微信公众号
微信扫一扫
一、Springboot 概论
1.1、SpringBoot 简介
我们在学习 Spring 框架的时候,经常为其繁杂的配置而苦恼。在我们第 n 次使用 Spring 框架的时候,是否
觉得一堆反复黏贴的配置有忒烦呢?那么不妨试试 Spring Boot 吧。Spring Boot 让我们更易上手,更简单
快捷地构建基于 Spring 的应用!
Spring Boot 让我们的 Spring 应用变的更轻量化。比如:你可以仅仅依靠一个 Java 类来运行一个 Spring 应
用。你也可以打包你的应用为 jar 并通过使用 java -jar 来运行你的 Spring Web 应用。
Spring Boot 的主要优点:
为所有 Spring 开发者更快的入门
开箱即用,提供各种默认配置来简化项目配置
内嵌式容器简化 Web 项目
没有冗余代码生成和 XML 配置的要求
简言之,Spring Boot 是一个快速开发的框架,能够快速的整合第三方框架,简化 XML 配置,全部采用注解
形式,内置 Tomcat 容器,帮助开发者能够实现快速开发,简化了应用系统的初始搭建以及开发过程。
本节主要目标完成 Spring Boot 基础项目的构建,并且实现一个简单的 Http 请求处理,通过这个例子对 Sp
ring Boot 有一个初步的了解,并体验其结构简单、开发快速的特性。
1.2、环境配置
JDK 8+
Spring Framework 5.x
本文采用 Java 1.8.0_71、Spring Boot 2.0.3.RELEASE 版本调试通过。
本教程代码下载地址:
1.3、SpringBoot 和 SpringMVC 区别
SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化 XML 配置,全部采用注解形式,内
嵌 Tomcat 容器,帮助开发者能够实现快速开发。SpringMVC 是一个封装了 Servlet API 的 MVC 框架,就像
其它的 MVC 框架,比如 Struts 一样负责处理 web 请求。SpringBoot 的 Web 组件默认集成的是 SpringMVC
框架。SpringMVC 通常被叫做控制层框架。
1.4、SpringBoot 和 SpringCloud 区别
SpringCloud 依赖于 SpringBoot 组件,或者说 Spring Cloud 构建于 Spring Boot 之上。它为微服务中涉及的
配置管理、服务治理、断路器、智能路由、控制总线、全局锁、决策竞选、分布式会话和集群状态管理通
常我们使用 SpringMVC 编写 http 协议接口,同时使用 SpringCloud 作为一套完整的微服务解决框架。
二、快速入门
2.1、创建一个 Maven 工程
通过 IDEA 创建一个名为 sbdemo,类型为 Jar 工程
勾选 web 支持
则在 pom 文件里会自动添加 Web 应用所需的依赖:
org.springframework.boot
spring-boot-starter-web
2.2、pom 文件
4.0.0
com.zpc.sb
sbdemo
0.0.1-SNAPSHOT
jar
sbdemo
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.0.4.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
spring-boot-starter-parent 作用
在 pom.xml 中引入 spring-boot-start-parent,spring 官方的解释叫 stater poms,它可以提供 dependency management,即依赖管理,
引入以后在申明其它 dependency 的时候就不需要指定 version。
spring-boot-starter-web 作用
springweb 核心组件
spring-boot-maven-plugin 作用
如果我们要直接 Main 启动 spring,那么该插件无须要添加。如果使用 maven 的 spring-boot:run 的话是需要此配置的。
此时在生成好的代码里直接可以运行 springboot demo 了:
常见问题:
运行程序时报 Process finished with exit code 0
这通常是由于 pom 中没有引入 web 容器,即引入依赖
org.springframework.boot
spring-boot-starter-web
2.3、编写 HelloWorld 服务
创建 package 命名为 com.zpc.sb.controller
创建 HelloController 类:
package com.zpc.sb.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(HelloController.class, args);
}
}
@RestController
加上 RestController 注解表示修饰该 Controller 所有的方法返回 JSON 格式,直接可以当做
Restful 接口
@EnableAutoConfiguration
此注解作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置。
这个注解告诉 Spring Boot 根据添加的 jar 依赖猜测你想如何配置 Spring。由于 spring-boot-starter-web 添加
了 Tomcat 和 Spring MVC,所以 auto-configuration 将假定你正在开发一个 web 应用并相应地对 Spring 进行
设置。
SpringApplication.run(HelloController.class, args);
标识为启动类
2.4、SpringBoot 启动方式 1
Springboot 默认端口号为 8080
@RestController
@EnableAutoConfiguration
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(HelloController.class, args);
}
}
右键运行启动主程序,打开浏览器访问 http://localhost:8080/index,可以看到页面输出 Hello World
2.5、SpringBoot 启动方式 2
@ComponentScan(basePackages = "com.zpc.sb.controller")---控制器扫包范围
@ComponentScan(basePackages = "com.zpc.sb.controller")
@EnableAutoConfiguration
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
2.6、SpringBoot 启动方式 3
使用@SpringBootApplication 注解
@SpringBootApplication 被 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,
换言之 Springboot 提供了统一的注解来替代以上三个注解
扫包范围:在启动类上加上@SpringBootApplication 注解,默认当前包下或者子包下所有的类都可以扫到。
当然该注解也可以指定扫包范围:@SpringBootApplication(scanBasePackages = "com.zpc.sb.controller")
三、Web 开发
3.1、 静态资源访问
在我们开发 Web 应用的时候,需要引用大量的 js、css、图片等静态资源。
默认配置
Spring Boot 默认提供静态资源目录位置需置于 classpath 下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources
举例:我们可以在 src/main/resources/目录下创建 static,在该位置放置一个图片文件。启动程序后,尝试访
问 http://localhost:8080/xxx.jpg。如能显示图片,配置成功。
3.2、 渲染 Web 页面
渲染 Web 页面
在之前的示例中,我们都是通过@RestController 来处理请求,所以返回的内容为 json 对象。那么如果需要
渲染 html 页面的时候,要如何实现呢?
模板引擎
在动态 HTML 实现上 Spring Boot 依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在
推荐的模板引擎下,我们可以很快的上手开发动态网站。
Spring Boot 提供了默认配置的模板引擎主要有以下几种:
Thymeleaf
FreeMarker
Velocity