0%

Spring Boot项目搭建

一、Spring Boot概述

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。总所周知,Spring平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理,而Spring Boot的出现就是用来简化操作的。相比传统的Spring,项目搭建更简单、方便、快速。

二、项目搭建

本文采用IDEA搭建Spring Boot,Demo结构图如下:

spring boot-1.png

通过IDEA生成Spring Boot项目很方便,具体步骤不再赘述,可以参考网上其他资料,如上图,主要生成:

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

默认pom.xml生成jar包依赖项如下所示:

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
54
55
<?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.snail</groupId>
<artifactId>bootdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

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

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.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>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>


<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

三、测试用例

Demo并没有配置数据库,只是简单地测试一下Http 请求,并结合现实中的场景,我们的配置文件往往在线下环境、生产环境的配置是不一样的,可以通过配置来获取对应的文件,如下所示。

3.1 实体类

其中ConfigurationProperties注解的目的是用来映射配置文件的,会在配置文件yml文件里新建配置项application.yml、application-product.yml(生产环境)、application-test.yml(测试环境),通过前缀CustomerInfo可以获取配置文件里对应的映射。

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
/**
* 客户基本信息
* Create by snailTech
* 2017-07-24 16:31
**/
@Component
@ConfigurationProperties(prefix = "CustomerInfo")
public class CustomerInfo {
/**
* 姓名
*/
private String name;

/**
* 手机号码
*/
private String mobile;

/**
* 年龄
*/
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getMobile() {
return mobile;
}

public void setMobile(String mobile) {
this.mobile = mobile;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

3.2 application.yml

1
2
3
spring:
profiles:
active: product

通过这个配置active为product可以得知读取的是application-product.yml文件,其中port是Web容器(默认是Tomcat)的端口号,以及context-path是虚拟路径。

3.3 application-product.yml

1
2
3
4
5
6
7
8
server:
port: 8080
context-path: /bootdemo
testUrl: http://www.baidu.com
CustomerInfo:
name: snail
mobile: 18818718711(生产环境)
age: 30

3.4 application-test.yml

1
2
3
4
5
6
7
8
server:
port: 8080
context-path: /bootdemo
testUrl: http://www.baidu.com
CustomerInfo:
name: snail
mobile: 18818718711(测试环境)
age: 30

3.5 配置Controller层

@RestController相当于@ResponseBody+@Controller,都是以json格式返回,@Value(“${testUrl}”)是用来获取配置文件里的testUrl配置项的,@RequestParam用来接收请求参数,其余的写法与SpringMvc的写法并没什么区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.snail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* Create by snailTech
* 2017-07-24 16:10
**/
@RestController
@RequestMapping(value = "/test")
public class TestController {
@Value("${testUrl}")
private String testUrl;

@Autowired
private CustomerInfo customerInfo;

//@RequestMapping(value="/hello" ,method = RequestMethod.GET)
@GetMapping(value = "/hello")
public String hello(@RequestParam("id") Integer xx){
return customerInfo.getMobile()+xx;
}
}

3.6 编译

编译非常简单,内置Tomcat,无需像SSM项目里还需要手动配置Tomcat,只要运行程序就可以了。

3.7 运行

springboot-2.png