Spring Boot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序。有了它,我们可以更加敏捷的开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功夫,甚至完全不用配置。实际上,Spring Boot的一项重要工作就是让Spring不再成为你成功路上的绊脚石。——《Spring Boot实战》
Spring Boot将很多魔法带入了Spring应用程序的开发中,其中最重要的是以下四个核心:
- 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
- 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
- 命令行界面:这是Spring Boot的可选特征,借此你只需要写代码就能够完成完整的应用程序,无需传统的项目构建。
- Actuator:让你能够深入运行中的Spring Boot程序,一探究竟。
从根本上来说,Spring Boot的项目就是普通的Spring项目,只是它正好用到了Spring Boot的起步依赖和自动配置而已。因此,那些你早已熟悉的从头创建Spring项目的技术或者开发工具,都能用于Spring Boot项目的创建。但是还有一些简洁的途径可以来开启一个新的Spring Boot项目。
使用 Spring Initializr 初始化 Spring Boot 项目
Spring Initializr 从本质上说就是一个Web应用程序,它能为你构建Spring Boot项目结构。虽然不能生成应用程序代码,但它能为你提供一个基本的项目结构,以及一个用于构件代码的Maven或者Gradle构建说明文件。
Spring Initializr 有几种用法:
- 通过Web界面使用
- 通过Spring Tool Suite使用
- 通过IntelliJ IDEA使用
- 通过Spring Boot CLI使用
使用Web方式:
要使用Spring Initializr,最直接的办法就是使用浏览器打开https://start.spring.io,应该能看到一个类似于下图的一个表单。
其中,从上往下,是需要我们选择的配置项,根据个人需求选择
- Project: 选择是使用Maven还是Gradle来创建项目。默认Maven,本次选择Maven。
- Language: 选择使用的开发语言。默认Java,本次选择Java。
- Spring Boot: 选择Spring Boot版本,默认最新版本(非里程碑和快照版本),也可以自由选择其他版本,本次选择最新的2.1.8.
- Project Metadata: 指定项目的一些基本信息。最起码得提供项目的Group和Artfact 。点击Options展开,也可以配置一些额外的信息:
- 项目名称(name):本次为demo1.
- 项目描述(Description):本次默认
- 包名(Package Name):本次为com.tumbler.demo1
- 打包方式(Packaging):本次为jar方式
- Java JDK版本号(Java):本次为1.8
当然这些额外信息都是后期可以修改的,Spring Boot的一大优势就是内嵌了Servlet容器,打成jar包后直接可以运行,所以建议打成jar包,当然开发者可以根据自己的需求打成war包。
- Dependencies: 选择需要的依赖,输入关键字就有相应提示,我们选择需要的依赖即可,它会在创建项目时自动在生成的pom.xml(Maven)或者build.gradle(Gradle)引入依赖,当然也可以后期配置。本次选在web依赖即可。
也可以点击旁边的列表方式,将以列表的形式展现可选依赖,如下图所示: - 填好表单,选好依赖后,可以点击下方Generate the project 按钮或者使用快捷键Ctrl+Enter,Spring Initializr就会生成一个项目,浏览器将会以zip文件的形式(文件名取决于Artifact字段的内容)把这个项目下载下来。
解压后通过IDEA或者Eclipse将项目导入,导入后我们可以看到项目的基本目录结构如下: - 正如我们时长所见,项目里基本没有代码,除了几个空目录外,还包含了如下几样东西:
- Maven构建说明:pom.xml 里面定义了Spring Boot版本,groupId、artifactId、项目描述、jdk版本以及web起步依赖。 <?xml version="1.0" encoding="UTF-8"?> 4.0.0
• org.springframework.boot
spring-boot-starter-parent
2.1.8.RELEASE
com.tumbler
demo1
0.0.1-SNAPSHOT
demo1
Demo project for Spring Boot
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- Demo1Application.java 一个带有main方法的类,用于引导启动应用程序。
package com.tumbler.demo1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
}
- Demo1ApplicationTests.java 一个空的JUnit测试类,它加载了一个使用Spring Boot自动配置功能的Spring应用程序上下文。
@RunWith(SpringRunner.class)
@SpringBootTest
public class Demo1ApplicationTests {
@Test
public void contextLoads() {
}
}
- application.properties 一个空的properties配置文件,可以根据需求添加配置属性。
还有几个空目录:static目录存放的是web应用程序的静态内容(JavaScript、样式表、图片等等),templates目录用于存放呈现模型数据的模板。
这样通过Spring Initializr 的Web方式已经成功创建一个Spring Boot的项目,我们写一个Controller进行测试。
/**
* User:tumbler
* Desc:Spring Boot 项目测试Controller
*/
@RestController
public class HelloController {
@GetMapping("hello.action")
public String hello(){
return "Hello Spring Boot";
}
}
启动项目,控制台可以看到使用内置容器Tomcat,端口号为8080
启动成功,在浏览器输入:http://localhost:8080/hello.action
可以看到成功返回了Hello Spring Boot: