Spring Boot 介绍

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Spring Boot 特点

简单、快速、方便

1.创建独立的 Spring 应用程序
2.直接嵌入 Tomcat,Jetty 或 Undertow(无需部署 WAR 文件)
3.提供固定的 “引用” 依赖项以简化构建配置
4.尽可能自动配置 Spring 和第三方库
5.提供生产就绪功能,例如指标,运行状况检查和外部化配置
6.绝对没有代码生成,也不需要 XML 配置

快速入门

创建 Spring Boot 有两个方式,通过访问 http://start.spring.io 获取 Spring Boot 基础项目,
通过IDE创建 Spring Boot 项目。

通过 http://start.spring.io 下载 Spring Boot 基础项目

1.访问 http://start.spring.io
2.选择配置相关参数,如下图

3.将下载的项目压缩包解压,导入IDE即可

通过 IDE 创建 Spring Boot 项目(以 idea 为例)

打开idea,File -> New -> Project -> 选择 Spring Initializr -> Next -> 设置包名项目名构建工具 Next -> 添加依赖 Next -> Finish





打开项目,项目结构如下

如上图所示,Spring Boot 的基础结构共三个文件:

  • src/main/java 程序开发以及主程序入口
  • src/main/resources 配置文件
  • src/test/java 测试程序

至此,Spring Boot 项目创建成功。

创建一个简单的 Web 应用程序

在 pom.xml 文件中添加 web 依赖包

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

创建 Web 控制器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.example.demo;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class HelloController {

@RequestMapping("/")
public String index() {
return "Greetings from Spring Boot!";
}

}

@RestController 让 Spring MVC 可以使用它来处理Web请求
@RequestMapping(“/“) 映射/到 index() 方法。从浏览器调用或在命令行上使用curl时,该方法返回纯文本
@RestController=@Controller+@ResponseBody,两个注释会导致Web请求返回数据而不是视图

在 Application 类中调用 controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.example.demo;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;

import java.util.Arrays;

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}

@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
System.out.println("Let's inspect the beans provided by Spring Boot:");

String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
};
}

}

@SpringBootApplication 是一个便利注解,包含了以下所有内容:
@Configuration 标记该类作为应用程序上下文的bean定义的源。
@EnableAutoConfiguration 告诉 Spring Boot 开始根据类路径设置,其他 bean 和各种属性设置添加 bean。
@ComponentScan告诉 Spring 在包中寻找其他组件,配置和服务 hello,允许它找到控制器。
main()方法使用 Spring Boot 的 SpringApplication.run() 方法来启动应用程序

运行项目

控制台输出由 Spring Boot 提供的引导包

访问http://localhost:8080/调用控制器
页面显示: Greetings from Spring Boot!
访问成功!

单元测试

添加依赖

1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

编写一个简单的单元测试,通过端点模拟 servlet 请求和响应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.example.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

@Autowired
private HelloController helloController;

@Test
public void getHello() throws Exception {
System.out.println("\n"+helloController.index());
}
}

运行测试类,控制台成功输出即可。

学习资源

Spring Boot 官网
Spring Boot 官方入门案例