第3章 一个Hello World项目

这一章我们使用 idea 来新建一个 Spring Boot 的 Web 项目 Hello World

首先我们在 idea 中,选择 FileNewProject 新建一个项目,我们选择使用 Speing Initialzr 新建一个项目:

第3章 一个Hello World项目_第1张图片
在这里插入图片描述

输入我们的 groupId :com.springboot.blog 和 artifactId : hello-world ,然后next

第3章 一个Hello World项目_第2张图片
在这里插入图片描述

添加 LombokSpring Web 依赖:

第3章 一个Hello World项目_第3张图片
在这里插入图片描述

第3章 一个Hello World项目_第4张图片
在这里插入图片描述

然后点击 Next ,确认好项目名之后点击 Finish

创建之后的项目结构如下图所示:


第3章 一个Hello World项目_第5张图片
在这里插入图片描述

我们先来观察一下我们的代码,将鼠标放在 @SpringBootApplication 注解上,可以看到它其实包含了很多注解:

第3章 一个Hello World项目_第6张图片
在这里插入图片描述

@EnableAutoConfiguration :根据类路径,开启 Spring 上下文的自动配置

@ComponentScan:自动扫描包下的带有 @Component 注解的bean,可以使用 @Autowired 实现自动注入功能

我们在 com.springboot.blog.controller 包下新建一个 Controller 类—— HelloController

第3章 一个Hello World项目_第7张图片
在这里插入图片描述

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 , 还是会提示无法自动注入

第3章 一个Hello World项目_第8张图片
在这里插入图片描述

这个时候我们需要在测试类上添加 @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!")));
    }
}

处理完前边的自动注入错误,我们再来运行我们的测试用例,可以看到测试用例运行成功:


第3章 一个Hello World项目_第9张图片
在这里插入图片描述

这时运行 HelloWorldApplication 启动我们的项目,在浏览器访问 http://localhost:8080/hello 可以看到下面的结果:

第3章 一个Hello World项目_第10张图片
在这里插入图片描述

以上,就是我们在idea中新建 Spring Boot 项目的一个过程,更过内容可以查看源代码了解。

源代码

hello-world

你可能感兴趣的:(第3章 一个Hello World项目)