springBoot的快速入门

1)maven的配置分析

打开当前工程下的pom.xml 文件,看看生成项目的时候都引入那些依赖创建SpringBoot工程,内容如下:




	4.0.0

	com.peter
	spring_test
	0.0.1-SNAPSHOT
	jar

	spring_test
	Demo project for Spring Boot

	
		org.springframework.boot
		spring-boot-starter-parent
		2.0.1.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-starter-actuator
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		

		
			org.springframework.boot
			spring-boot-starter-security
		

		
			com.alibaba
			druid
			1.0.29
		

	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

	
		
			dev
			
				profiles/dev
				
			
		
		
			pro
			
			profiles/pro
			
			
		
		
			test
			
			profiles/test
			
			
		
	



我们注意到Spring Boot打的是jar包:jar 正如我们说的Spring Bootweb打成的是一个jar包,不是war包,因为默认的web的依赖就会内嵌tomcat,这样就是我们使用jar包的时候就拥有web的服务能力。

父项目parent 配置指定为spring-boot-starter-parent 2.0.1.RELEASE的版本,该父项目中定义了Spring Boot 版本的基础依赖以及一些默认配置内容,比如配置文件application.properties 的位置等。

在项目依赖dependencies 配置中,包含了下面两项。

Spring-boot-starter-web ; spring-boot-starter-test

这里所引用的web test模块,在spring Boot 生态中被称为Starter POMS Starter POMS是一系列轻便的依赖包,是一套一站式的spring的相关的技术解决方案。

 

2)实现RESTful API

Spring Boot 中创建一个RESTful API 的实现代码同Spring MVC 应用一样,只是不需要像Spring MVC 那样先做很多的配置,而是向下面这样直接编写Controller 内容:

新建 package ,命名为 com.peter.controller

新建HelloController 类 ,内容如下所示。

 

package com.peter.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by Administrator on 2018/4/9.
 */
@RestController
@ResponseBody
public class HelloController {

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

通过 http://localhost:8080/hello 就可以看到hello word

3)编写单元测试

Spring Boot 中实现单元测试同样非常的方便,下面我们打开src/test/下的测试入口 com.peter.SpringTestApplicationTests 类 ,编写一个简单的单元测试来模拟HTTP 请求,测试之前实现的/hello接口, 该接口返回hello word 字符串。

具体代码实现如下所示:

package com.peter;

import com.peter.controller.HelloController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
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.core.IsEqual.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class SpringTestApplicationTests {
	private MockMvc mvc;

	@Before
	public void setUP(){
		mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
	}

	@Test
	public void hello() throws Exception {
		mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(content().string(equalTo("hello world")));

	}
}

代码解析如下:

@RunWith(SpringRunner.class)  引入Spring JUnit4的支持

@WebAppConfiguration 开启Web 应用的配置,用于模拟ServletContext

@Before JUnit 中定义的测试用例@Test内容执行前预加载的内容,这里用来初始化对HelloController的模拟

MockMvc 对象 :用于模拟调用Controller的接口发起请求,在@Test 定义的hello测试用例中,perform 函数执行一次请求调用 ,accept 用于执行接收的数据类型,andExpect用于判断接口的期望值。

你可能感兴趣的:(SpringBoot)