Spring Boot 概述
Spring Boot 主要的作用在于解决 Spring 项目配置麻烦的问题,用于快速创建和启动新的基于 Spring 的项目 ,Spring Boot 大量整合应用程序需要的第三方依赖类库或框架,大部分基于 Spring Boot 的应用只需要很少的配置就可以运行起来;
Spring Boot 是由一系列的启动器组成的,开发过程中只需要组合应用这些启动器,就可以快速搭建出一个适合项目的基础运行框架。
比如要开发一个基于 Maven 的 Java Web 项目,通常需要在 pom.xml 中引入 spring-web、spring-webmvc、jackson等依赖模块,如果使用 Spring Boot 只需要引入一个 spring-boot-starter-web 即可,Spring Boot 会自动引入这些相关依赖;
Spring Boot 的完整启动器列表:https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#using-boot-starter
快速使用示例
以下演示一个基于 Spring Boot 的简单 Web 程序,完整代码地址: https://gitee.com/assad/springboot-test-simple
首先在 pom.xml 中引入相关依赖:
pom.xml
<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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>site.assad</groupId>
<artifactId>testSpring_boot_simple</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
</dependencies>
</project>
编写一个web层控制器和启动器
HelloApp
package site.assad.web;
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;
public class HelloApp {
"/") (
public String index(){
return "Hello World!";
}
//启动程序
public static void main(String[] args){
SpringApplication.run(HelloApp.class,args);
}
}
此时编译运行 HelloApp,Spring Boot 会通过内嵌的 Tomcat 启动该程序;
通过浏览器访问地址 “http://127.0.0.1:8080” ,页面如下:
可以看到,使用 Spring Boot 编写运行基于 Spring 的程序十分简便;
安装配置
Spring Boot 1.59 官方推荐使用的 Java 版本为 Java 8.0+,Spring Boot 目前支持的内嵌 Servlet 容器如下:
Spring Boot 官方推荐使用 Maven 和 Gradle 来构建项目,依赖的版本分别是 Maven 3.2+,Gradle 1.12+;
基于 Maven 的配置示例
pom.xml
<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">
<!--继承 Spring Boot 默认配置-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>site.assad</groupId>
<artifactId>testSpring_boot_simple</artifactId>
<version>1.0</version>
<!--根据项目需求添加不同的启动器依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--配置运行插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
使用<parent>继承 Spring Boot 默认配置的方式,优点在于下面配置 Spring Boot 启动器时可以不需要再声明版本号,直接继承<parent> 中的版本号;
基于 Gradle 的配置示例
build.gradle
//导入Spring Boot 插件
plugins{
id 'org.springframework.boot' version '1.5.9.RELEASE'
id 'war'
}
sourceCompatibility = 1.8
war {
baseName = 'testSpring_boot_simple'
version = '1.0'
}
repositories {
jcenter()
}
//配置相关 Spring Boot 启动器依赖
dependencies {
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-starter-web"
}
以上的 groovy 脚本配置项目以 war 的方式打包,如果项目是以 jar 打包的,在引入插件dsl中将 ’war‘ 更改为 ’java‘,再配置 jar dsl 即可;
完整使用示例
以下以一个完整的用户登陆业务,来演示 Spring Boot 的使用,使用 Spring Boot 重写一个完全基于 Spring 配置的项目,对比可以看出 Spring Boot 的简便性;
原 Spring 项目代码地址:https://gitee.com/assad/springframework-test-mvc-login-demo
Spring Boot 更改后项目的代码地址:https://gitee.com/assad/springboot-test-loginSample
项目文件结构如下:
构建脚本 build.gradle 如下:
plugins{
id 'org.springframework.boot' version '1.5.9.RELEASE'
id 'war'
}
sourceCompatibility = 1.8
war {
baseName = 'testSpring_boot'
version = '1.0'
}
repositories {
jcenter()
}
dependencies {
//servlet 依赖
compile "javax.servlet:jstl"
compile "javax.servlet.jsp:jsp-api:2.0"
//spring boot 依赖
compile "org.springframework.boot:spring-boot-starter-actuator"
// web 层依赖
compile "org.springframework.boot:spring-boot-starter-web"
// dao 层依赖
compile "org.springframework.boot:spring-boot-starter-jdbc"
compile "mysql:mysql-connector-java:5.1.44"
// 测试相关依赖
testCompile "org.springframework.boot:spring-boot-starter-test"
//使用tomcat作为内嵌fuwuqi
compile "org.springframework.boot:spring-boot-starter-tomcat"
compile "org.apache.tomcat.embed:tomcat-embed-jasper"
}
spring boot 配置文件 application.properties 如下:
## 配置数据库连接
# 数据库连接信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test_spring_mvc
spring.datasource.username=root
spring.datasource.password=mysql1994assad
# 自定义数据库连接池
#spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
## 配置视图路径
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
## 配置日期等级
#logging.level.site.assad=DEBUG
#logging.level.org.springframework=DEBUG
Spring Boot 启动程序 Application 如下:
package site.assad;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
//启用注解事务管理
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class,args);
}
}