1. 项目创建
1.1 访问https://start.spring.io/,进行项目基础配置,然后下载导入到开发工具
1.2 项目接口如图:
2. 引入web依赖:
1.1
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1.2
pom.xml文件中默认有两个模块:
spring-boot-starter
:核心模块,包括自动配置支持、日志和YAML;
spring-boot-starter-test
:测试模块,包括JUnit、Hamcrest、Mockito。
3. 编写controller内容
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";} }
4. 启动项目,访问http://localhost:8080/hello
5. 进行单元测试
@RunWith(SpringRunner.class) @WebAppConfiguration public class SpringbootApplicationTests { private MockMvc mvc; @Before public void setUp() { mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build(); } @Test public void contextLoads() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }
6. 加载热部署
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>
7. 上述涉及到的注解以及代码详解:
7.1 @RestController注解:
@RestController = @Controller + @ResponseBody,自动将返回的对象实体转为Json格式,无法返回jsp或html页面, 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
7.2 @SpringBootApplication注解:
@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan
@Configuration:是一个类级注释,指示对象是一个bean定义的源。@Configuration 类通过 @bean 注解的公共方法声明bean
@Bean:是用来表示一个方法实例化,配置和初始化是由 Spring IoC 容器管理的一个新的对象。
@EnableAutoConfiguration:启用 Spring 应用程序上下文的自动配置,试图猜测和配置您可能需要的bean。自动配置类通常采用基于你的 classpath 和已经定义的 beans 对象进行应用。被 @EnableAutoConfiguration 注解的类所在的包有特定的意义,并且作为默认配置使用。例如,当扫描 @Entity类的时候它将本使用。通常推荐将 @EnableAutoConfiguration 配置在 root 包下,这样所有的子包、类都可以被查找到。
@ComponentScan:为 @Configuration注解的类配置组件扫描指令。同时提供与 Spring XML’s 元素并行的支持
7.3 @RequestMapping:会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上
7.4 @RunWith就是一个运行器
@RunWith(JUnit4.class)就是指用JUnit4来运行
@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
@RunWith(Suite.class)的话就是一套测试集合
@SpringApplicationConfiguration:导入配置支持
@WebAppConfiguration
新版的Spring Boot取消了@SpringApplicationConfiguration这个注解,用@SpringBootTest
7.5 单元测试学习博客地址:https://www.cnblogs.com/lyy-2016/p/6122144.html
7.5.1 通过MockMvcBuilders.standaloneSetup模拟一个Mvc测试环境,放置要测试的类,通过build方法得到Mockmvc
7.5.2 写测试类,执行Mockmvc的
perform方法,会自动执行springmvc流程,并映射到相应控住器。
MockMvcRequestBuilders.get("/user/1")构造一个请求
andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;
andDo:添加ResultHandler结果处理器,比如调试时打印结果到控制台;
andReturn:最后返回相应的MvcResult;然后进行自定义验证/进行下一步的异步处理;
整个测试过程非常有规律:
1、准备测试环境
2、通过MockMvc执行请求
3.1、添加验证断言
3.2、添加结果处理器
3.3、得到MvcResult进行自定义断言/进行下一步的异步请求
4、卸载测试环境