SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。使用spring boot可以非常方便、快速搭建项目。我们想使用任何东西,仅仅添加一个配置就可以,所以使用sping boot非常适合构建微服务。
SpringBoot所具备的特征有:
(1)访问https://start.spring.io/
(2)解压后,使用eclipse导入项目
(3)选中解压后的项目
(4)项目结构
(5)Spring Boot的基础结构共三个文件:
(6)springboot包结构
(7)执行SpringbootDemoApplication类启动项目
@SpringBootApplication : 是Spring Boot 项目的核心注解 主要目的是开启自动配置
@SpringBootApplication注解是一个组合注解,主要组合了@Configuration .+@EnableAutoConfiguration.+@ComponentScan
(8)这样最基本的项目创建完成
(1)pom.xml中添加支持web的模块:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
pom.xml文件中默认有两个模块:
(2)编写Controller内容
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
@RestController注解相当于@ResponseBody + @Controller合在一起的作用
@RestController:一般用于接口或前后端分离
如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp,html页面,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是return 里的内容。
@Controller一般用于后台页面
如果需要返回到指定页面,则需要用 @Controller 配合视图解析器 InternalResourceViewResolver 才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
(3)启动主程序
打开浏览器访问http://localhost:8080/hello,就可以访问了。
(4)单元测试
打开的src/test/下的测试入口,编写简单的http请求来测试;使用mockmvc进行,利用MockMvcResultHandlers.print()打印出执行结果。
package com.buba;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
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.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.buba.controller.HelloWorldController;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MockServletContext.class)
@WebAppConfiguration
public class HelloWorldControlerTests {
private MockMvc mvc;
@BeforeEach
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();
}
}
运行结果
@RunWith
@RunWith 就是一个运行器
@RunWith(JUnit4.class) 就是指用JUnit4来运行
@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
@RunWith(Suite.class) 的话就是一套测试集合,
@ContextConfiguration Spring整合JUnit4测试时,使用注解引入多个配置文件
@SpringBootTest
注解是SpringBoot Since:1.4.0 版本开始引入的一个用于测试的注解。classes属性指定启动类。
@WebAppConfiguration
指定加载 ApplicationContext是一个WebApplicationContext,作用是模拟ServletContext,
@BeforeEach
在 JUnit 5 中,有4个注解你可能会用于如此工作:
(5)开发环境调试
热启动在正常开发项目中已经很常见了,虽然平时开发web项目过程中,改动项目自动重启总是报错;但springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:
org.springframework.boot
spring-boot-devtools
true
org.springframework.boot
spring-boot-maven-plugin
true
该模块在完整的打包环境下运行的时候会被禁用。如果你使用java -jar启动应用或者用一个特定的classloader启动,它会认为这是一个“生产环境”。
如果本文对您有很大的帮助,还请点赞关注一下。