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,应该能看到一个类似于下图的一个表单。

springboot 项目请求页面 springboot 界面_spring

其中,从上往下,是需要我们选择的配置项,根据个人需求选择

  • 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依赖即可。
    也可以点击旁边的列表方式,将以列表的形式展现可选依赖,如下图所示:
  • springboot 项目请求页面 springboot 界面_应用程序_02

  • 填好表单,选好依赖后,可以点击下方Generate the project 按钮或者使用快捷键Ctrl+Enter,Spring Initializr就会生成一个项目,浏览器将会以zip文件的形式(文件名取决于Artifact字段的内容)把这个项目下载下来。
    解压后通过IDEA或者Eclipse将项目导入,导入后我们可以看到项目的基本目录结构如下:
  • springboot 项目请求页面 springboot 界面_java_03

  • 正如我们时长所见,项目里基本没有代码,除了几个空目录外,还包含了如下几样东西:
  • 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

springboot 项目请求页面 springboot 界面_应用程序_04


启动成功,在浏览器输入:http://localhost:8080/hello.action

可以看到成功返回了Hello Spring Boot:

springboot 项目请求页面 springboot 界面_spring_05