SpringBoot(一):创建第一个工程

一.简介

为什么要用Spring Boot?因为简洁,简单。

Spring系列发展到现在 ,如果一个新接触的开发者想要使用 spring 技术,需要一个一个的搞配置,然后还有个版本兼容性问题,非常麻烦,就算是老手偶尔都会踩坑。而 Spring Boot 就是来解决这个问题的,完全可以先不关心如何配置,做到快速启动开发进行业务逻辑编写,各种需要的技术,加入 starter 配置就行,开发速度大大提高.

诚然,如果是个技术爱好者要追根究底,也可以从Spring最开始入门,让头发变得更少一点,而不是“开袋即食”。

二.创建工程

  • 打开IDEA
  • New Project 选择 Spring Initializr
  • 填写Group、Artifact
  • 点击Web,开启Web功能
  • Finish

(开发工具默认使用IDEA,JDK1.8+,Mavan3.0+)

pom.xml : 依赖文件,项目基本框架以及后续框架注入都在这里配置

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>salesforcedemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>salesforcedemo</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<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>


</project>

工程目录下的resources文件夹为Web端文件:

  • static: 静态资源

  • templates: 网页资源

  • application.properties:配置文件

看看项目根目录的Application文件:

@SpringBootApplication是一个便利的注释,它添加了以下所有内容:

  • @Configuration 将类标记为应用程序上下文的bean定义的源

  • @EnableAutoConfiguration 告诉Spring Boot开始根据类路径设置,添加其他bean和各种属性设置

  • 在使用Spring MVC应用程序时,通常你会添加@EnableWebMvc,但Spring Boot会在类路径上看到spring-webmvc时自动添加,这会将应用程序标记为Web应用程序,并激活关键行为,比如设置 DispatcherServlet

  • @ComponentScan 告诉Spring在包中寻找其他组件,配置和服务,允许它找到控制器

  • main()方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。你是否注意到没有一行XML?也没有web.xml文件。此Web应用程序是100%纯Java,无需进行任何初级配置

三.Hello SpringBoot

新建Controller类:

1
2
3
4
5
6
7
8
9
10
11
12

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

@RestController
public class HelloController {

@RequestMapping(value = "/", method = RequestMethod.GET)
public String hello() {
return "Hello SpringBoot!";
}
}

运行程序,打开浏览器访问localhost:8080,即可显示:

Hello SpringBoot!

四.单元测试

可以使用Spring Boot编写一个非常简单的全栈集成测试,如下:

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

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class HelloControllerIT {

@LocalServerPort
private int port;

private URL base;

@Autowired
private TestRestTemplate template;

@Before
public void setUp() throws Exception {
this.base = new URL("http://localhost:" + port + "/");
}

@Test
public void getHello() throws Exception {
ResponseEntity<String> response = template.getForEntity(base.toString(),
String.class);
assertThat(response.getBody(), equalTo("Greetings from Spring Boot!"));
}

private void assertThat(String body, Matcher<String> stringMatcher) {

//.......

}
}

通过webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT嵌入服务先在随机端口上启动,然后运行时调用@LocalServerPort发现实际端口。

五.总结

可以看到,不需要进行多余的其它配置,web.xml不需要,tomact内嵌有,整个项目从开始构建到运行不会超过5分钟。

点击查看源码

参考资料