框架简介
SpringBoot的宗旨并非要重写Spring或是替代spring,而是希望大量的自动化配置等方式来简化Spring原有样板化的配置,使得开发者可以快速的构建应用.
快速入门
项目的构建与解析
- Java7及以上版本
- Spring Framework4.2.7及以上版本
- Maven3.2及以上版本/gradle1.12及以上版本
构建Maven项目
- 通过官方的Spring Initiaizr工具来产生基础项目.
- 访问https://start.spring.io,该页面提供了以Maven或Gradle构建的Spring Boot项目的功能.
- 选择构建工具Maven Project,Spring Boot版本1.3.7,填写Group和Artifact信息.在search for dependencies添加所需要的依赖包,实现Restful API 需要添加web依赖.
- 单机Generate Project 下载项目压缩包.
- 解压压缩包,并用IDE以Maven项目导入.
- 从菜单中选择File–>new–>Project for Existing Source …
- 选择解压后的项目文件夹
- 以Mvaen项目导入,并选择JDK版本.
工程结构解析
- src/main/java:主程序入口,可以直接运行该类来启动Spring Boot 应用.
- src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名,服务端口,数据库连接等.由于我们引入了Web模块,因此产生了static目录与templates目录,前者用于存放静态资源,如图片,css,js等,后者用于存放web页面的模板文件.
- src/test/: 单元测试目录,通过Junit4实现,可以直接运行spring boot 应用的测试.
Mvaen的配置分析
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<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>
</project>
在基础信息部分,groupid和artifactId对应生成项目页面上输入的内容,打包形式为**jar,Spring Boot项目默认把web应用打成jar包**.
父项目parent配置指定为spring-boot-starter-parent
的1.3.7
版本,该父项目中定义了spring boot 版本中的基础依赖以及一些默认的配置内容.比如application.properties
的位置等.
在项目依赖的dependences配置中,包含以下两项:
- spring-boot-starter-web:全站web开发模块,包含嵌入式Tomcat,spring MVC.
- spring-boot-starter-test:通用测试模块,包含Junit,Hamcrest,Mockito.
实现restful API
- 新建包,新建一个controller类 ,如下:
@RestController
public class HelloController {
@RequestMapping("hello")
public String index(){
return "Hello word";
}
}
- 启动程序,访问,我们可以得到预期结构,hello Word.
启动spring boot应用
- 直接通过
main
函数来启动. - 在maven的配置中,使用了spring boot的插件,可以使用插件启动,比如执行
mvnspring-boot:run
命令,或者直接单击IDE中的maven插件工具.
- 在服务器部署运行时,通常先使用
mvn install
将应用程序打成jar包,在通过java -jar xxx.jar
来运行.
编写单元测试
在Spring Boot项目中实现单元测试十分方便,我们只需在src/test/编写即可.
# 例子如下
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootApplicationConfiguration(classes = HelloApplicationTests.class)
@WebAppConfiguration
public class HelloApplicationTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloController().build());
}
}
代码解析如下:
- @RunWith(SpringJUnit4ClassRunner.class):引入spring对Junit4的支持.
- @WebAppConfiguration:开启web应用的配置,用于模拟ServletContext.
- MockMvc对象:用于模拟调用Controller的接口发起请求.
- @Before:Junit中测试用例@Test内容执行前加载.
- @SpringBootApplicationConfiguration(classes = HelloApplicationTests.class) :指定spring boot的启动类.