三、Springboot学习1-配置-2018-11-13

版权声明:kanghu https://blog.csdn.net/weixin_40739280/article/details/84026695

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、卸载测试环境

猜你喜欢

转载自blog.csdn.net/weixin_40739280/article/details/84026695