springBoot的快速入门

1)maven的配置分析

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


<?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.peter</groupId>
	<artifactId>spring_test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring_test</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</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-actuator</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-starter-security</artifactId>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.29</version>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

	<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<env>profiles/dev</env>
				<main-name></main-name>
			</properties>
		</profile>
		<profile>
			<id>pro</id>
			<properties>
			<env>profiles/pro</env>
			<main-name></main-name>
			</properties>
		</profile>
		<profile>
			<id>test</id>
			<properties>
			<env>profiles/test</env>
			<main-name></main-name>
			</properties>
		</profile>
	</profiles>

</project>

我们注意到Spring Boot打的是jar包:<packaging>jar</packaging> 正如我们说的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用于判断接口的期望值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值