简介
您在使用Spring时是否对大堆的配置文件感到头疼?是否对重复的复制粘贴配置文件感到厌烦?虽然Spring的组件代码是轻量级的,但是它的配置确实重量级的。Spring2.5引入的基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式xml配置。Spring3.0引入了基于java的配置,这是一种类型安全的可重构的配置方式,可以替代xml。
但是,尽管如此,我们依旧无法逃离配置的魔抓。开启某些Spring特性时,比如事物、spring mvc,还是需要配置xml或java进行显式配置。启用第三方类库时也需要显式配置,比如Thymeleaf的web视图等等。那么不妨试一下springboot,您可以更简单的构建一个spring应用。
Spring Boot的四个核心:
- 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能够自动提供相应配置。
- 起步依赖:告诉Spring Boot需要什么功能,就引入需要的库。
- 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统的项目构建。
- Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。
快速入门
本章主要目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。
本文采用java 1.8.0_111、Spring Boot 1.4.2、Maven 3.0.5调试通过。
使用Maven构建项目
本文只介绍构建springboot的一种方式,其他方式大家可以google一下,言归正传,一下方式是使用IDEA构建springboot的步骤:
1、菜单中依次选择File --> New --> Project... 如图:
2、在菜单中选择Spring Initializr ,大家可以选择自己本地的jdk版本,此处我选择的是java 1.8.0_111,Service URL默认即可,若你的环境有多个版本的JDK,注意到选择java jdk的时候请选择java1.7以上的版本,如图:
3、点击Next,此处大家可以定义自己的Maven项目参数等,此处不做过多介绍,为了演示,此处我使用默认内容,如图:
4、点击Next,此处大家可以选择需要使用的springboot版本,以及需要添加的起步依赖的组件,因为只是演示最简单的springboot功能,此处只选择Web组件即可,如图:
5、点击Next,此处需要大家填写自己项目的名称以及项目路径,如图:
6、点击Finish构建过程即结束。
项目结构解析
通过以上步骤,完成了基本的构建过程,项目结构如上图,那么介绍一下项目结构
- src/main/java/com/example 下的DemoApplication是整个程序的入口。
- src/main/resources下为放配置文件的位置,默认配置文件为application.properties
- src/test/下的DemoApplictaionTests是单元测试入口
- src/main/resources/static此目录是默认存放web静态资源的目录
- src/main/resources/templates 此目录是默认存放引擎模板的目录,如velocity、thymeleaf
pom解读
当前pom.xml内容如下,仅引入了两个模块:
- spring-boot-starter-web:web核心模块
- spring-boot-starter-test:单元测试模块
<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>
编写hello world
- 创建HelloWorldController类,如下:
@RestController
public class HelloWorldController {
@RequestMapping(value="/helloWorld")
public String helloWorld(){
return "HelloWorld!";
}
}
- 在DemoApplication右键run开启主程序,打开浏览器访问http://localhost:8080/helloWorld,可以看到页面显示HelloWorld!
单元测试
打开src/test下的DemoApplictaionTests测试入口类。下面编写一个简单的单元测试来模拟http请求,具体如下:
package com.example;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@SpringBootTest
public class DemoApplicationTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void contextLoads() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/helloWorld").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello World!")));
}
}
至此我们构建了一个简单的Spring Boot项目。