springboot诞生背景
- Spring Boot 诞⽣⼀⽅⾯是因为Spring ⾃身发展所遇到的问题,另⼀⽅⾯在微服务思想诞⽣之际,急需要⼀款快速开发⼯具来实现微服务技术落地,在这样的背景下诞⽣了Spring Boot。Spring Boot 整体的设计思想是:约定优于配置、依赖此设计思路,Spring Boot 进⾏了⼤⼑阔斧的改⾰,让⼈们⾮常容易的实现开发、测试、部署。众多的Starters 成就了Spring Boot 的发展,让使⽤Spring Boot 开发项⽬变的更加简单。
springboot环境搭建
利用idea搭建springboot
- 通过springinitializer 来快速建立工程
springboot工程目录结构
- src/main/java/com/lzg/hello 这个目录下放java的代码
- src/main/test/目录下放测试代码
- src/main/resources放配置文件和静态资源
简单的helloworld程序
代码
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(String name){
return "hello,world " + name + "热部署";
}
}
一个坑
- java代码的目录需要在你的工程名的那个包下面,建包也得放在它的下面,否则会出现404
@RestController
- 这个注解 = @ResponseBody + @Controller
- 加了这个注解的Controller的所有方法返回的数据格式都为json
测试工具MockMvc的使用
@SpringBootTest
public class HelloTest {
private MockMvc mockMvc;
@BeforeEach
public void setUp(){
mockMvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
@Test
public void getHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/hello?name=小明")
.accept(MediaType.APPLICATION_JSON_UTF8))
.andExpect(MockMvcResultMatchers.content().string(Matchers.containsString("小明")));;
}
}
测试配置
- springboot的单元测试,可以对controller进行post和get测试(不用通过浏览器)
- 在测试类中包含 MockMvc这个字段
- @BeforeEach这个注解表示在测试方法之前执行,然后初始化mockMvc
打印请求与相应体
- 需要包含 import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
print为这个类的静态方法 - .accept(MediaType.APPLICATION_JSON_UTF8)).andDo(print());
获取结果判断与预期是否相符
- andExpect(MockMvcResultMatchers.content().string(Matchers.containsString(“小明”)))