您的位置:首页 > 编程语言 > Java开发

Spring Boot 学习(一) 快速搭建SpringBoot 项目

2017-01-18 20:42 1016 查看

快速搭建一个 Spring Boot 项目

部分参考于《深入实践Spring Boot》、《Spring实战 第四版》与程序猿DD的有关博客。

Spring Boot 优点

轻量化

提供 Spring 框架各种默认配置来简化项目配置

内嵌 Web 容器

没有冗余代码生成和XML配置要求

Maven 导包

spring-boot-starter
:核心模块,包括了自动配置支持、日志和YAML

spring-boot-starter-test
:测试模块,包括JUnit、Hamcrest、Mockito

spring-boot-starter-web
:Web模块

开工

一个 Spring Boot 案例应该包括四个部分(主加载类、逻辑实现类、单元测试类、以及资源配置文件)。

1. 资源配置文件:这个文件主要记录了框架下各种设置;前面,我们提到过 Spring Boot 提供 Spring 的默认设置,所以一开始并不需要对这个文件做任何修改,让框架内嵌的Web容器加载该文件即可。* 注意:命名为
application.properties
*,并且默认端口为8080。

2. 主加载类:Spring Boot 框架下,最重要的一个类,也是启动整个框架的入口。一般有两种代码模板,好像也没有什么区别。这里先写一种:

@SpringBootApplication

public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}


3. 逻辑实现类:就是我们提供的服务接口,一般就是我们的Controller层。这里实现一个简单的”hello world!”的Controller,便于测试。

启动项目后,访问 http://localhost:8080/hello 来访问这个控制器。

@RestController
public class HelloController {

@RequestMapping("/hello")
public String index(){
return "hello world!";
}
}


4. 单元测试类:顾名思义,就是一个用来测试我们的逻辑实现类的类。

这里使用 JUnit 模拟一个 http 请求来测试我们的 HelloController。

同时,这里涉及到
Spring AOP
@Before
,有兴趣的也可以去查看一下。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
//测试环境使用,用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的
public class ApplicationTest  {

private MockMvc mvc;

@Before
public void setUp() throws Exception{
//通过MockMvcBuilders.xxxSetup().build()创建一个MockMvc进行测试;
mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}

@Test
public void getHello() throws Exception{
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("hello world!")))
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
/**
* 1、mockMvc.perform执行一个请求。
* 2、MockMvcRequestBuilders.get("XXX")构造一个请求。
* 3、ResultActions.andExpect添加执行完成后的断言。
* 4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情
*   比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
* 5、ResultActions.andReturn表示执行完成后返回相应的结果。
*/
}


最后附上, http 请求响应后的报文。

MockHttpServletRequest:
HTTP Method = GET
Request URI = /hello
Parameters = {}
Headers = {Accept=[application/json]}

Handler:
Type = qg.fangrui.boot.web.HelloController
Method = public java.lang.String qg.fangrui.boot.web.HelloController.index()

Async:
Async started = false
Async result = null

Resolved Exception:
Type = null

ModelAndView:
View name = null
View = null
Model = null

FlashMap:
Attributes = null

MockHttpServletResponse:
Status = 200
Error message = null
Headers = {Content-Type=[application/json;charset=ISO-8859-1], Content-Length=[12]}
Content type = application/json;charset=ISO-8859-1
Body = hello world!
Forwarded URL = null
Redirected URL = null
Cookies = []
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息