一、Spring Boot概述 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。总所周知,Spring平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理,而Spring Boot的出现就是用来简化操作的。相比传统的Spring,项目搭建更简单、方便、快速。
二、项目搭建 本文采用IDEA搭建Spring Boot,Demo结构图如下:
通过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 /> </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 @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;@RestController @RequestMapping (value = "/test" )public class TestController { @Value ("${testUrl}" ) private String testUrl; @Autowired private CustomerInfo customerInfo; @GetMapping (value = "/hello" ) public String hello (@RequestParam("id" ) Integer xx) { return customerInfo.getMobile()+xx; } }
3.6 编译 编译非常简单,内置Tomcat,无需像SSM项目里还需要手动配置Tomcat,只要运行程序就可以了。
3.7 运行