这一章我们使用 idea 来新建一个 Spring Boot 的 Web 项目 Hello World
首先我们在 idea 中,选择 File
→ New
→ Project
新建一个项目,我们选择使用 Speing Initialzr
新建一个项目:
输入我们的 groupId :com.springboot.blog
和 artifactId : hello-world
,然后next
添加 Lombok
和 Spring Web
依赖:
然后点击 Next
,确认好项目名之后点击 Finish
创建之后的项目结构如下图所示:
我们先来观察一下我们的代码,将鼠标放在 @SpringBootApplication
注解上,可以看到它其实包含了很多注解:
@EnableAutoConfiguration
:根据类路径,开启 Spring 上下文的自动配置
@ComponentScan
:自动扫描包下的带有 @Component
注解的bean,可以使用 @Autowired
实现自动注入功能
我们在 com.springboot.blog.controller
包下新建一个 Controller
类—— HelloController
:
HelloController 类代码如下:
@RestController // @RestController = @Controller + @ResponseBody,返回一个符合restful风格的 json串
public class HelloController {
@RequestMapping("/hello")
public String Hello() {
return "Hello World!";
}
}
接着我们在 test 的 com.springboot.blog.controller
包下新建一个 HelloControllerTest
测试类,使用测试用例来测试我们 HelloController
的中 hello
方法,HelloControllerTest 代码如下:
@SpringBootTest
public class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void contextLoads() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string(Matchers.equalTo("Hello World!")));
}
}
运行上面的测试用例,会提示我们测试失败,失败信息如下:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.test.web.servlet.MockMvc' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
这是因为我们测试用例运行的时候找不到 MockMvc
,导致的,在idea中我们也可以看到即使我们使用了 @Autowired
注解 来自动注入了 MockMvc
, 还是会提示无法自动注入
![](https://img.haomeiwen.com/i19878305/8d24e049cc0cd299.png)
这个时候我们需要在测试类上添加 @AutoConfigureMockMvc
注解来解决这个错误,完整测试用例代码如下:
@SpringBootTest
@AutoConfigureMockMvc // 在使用 MockMvc 进行测试时,一定不要忘了加上该注解
public class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void contextLoads() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string(Matchers.equalTo("Hello World!")));
}
}
处理完前边的自动注入错误,我们再来运行我们的测试用例,可以看到测试用例运行成功:
![](https://img.haomeiwen.com/i19878305/8d8ab81b52ceea0a.png)
这时运行 HelloWorldApplication
启动我们的项目,在浏览器访问 http://localhost:8080/hello
可以看到下面的结果:
![](https://img.haomeiwen.com/i19878305/67e91c2a2c6f29e9.png)
以上,就是我们在idea中新建 Spring Boot 项目的一个过程,更过内容可以查看源代码了解。
网友评论