spring全家桶系列之spring boot 2.2-Spring MVC(三)

spring mvc

HttpMessageConverters


  • Spring MVC使用该HttpMessageConverter接口来转换HTTP请求和响应。明智的默认设置包含在开箱即用中。例如,对象可以自动转换为JSON(通过使用Jackson库)或XML(如果可用,则使用Jackson XML扩展,或者如果Jackson XML扩展不可用,则使用JAXB)。默认情况下,字符串是以编码的UTF-8
  • 如果需要添加或自定义转换器,可以使用Spring Boot的 HttpMessageConverters类,如下面的清单所示:
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.*;
import org.springframework.http.converter.*;

@Configuration
public class MyConfiguration {

    @Bean
    public HttpMessageConverters customConverters() {
        HttpMessageConverter additional = ...
        HttpMessageConverter another = ...
        return new HttpMessageConverters(additional, another);
    }

}

自定义json序列化反序列化


@JsonComponent
public class Example {

    public static class Serializer extends JsonSerializer {
        // ...
    }

    public static class Deserializer extends JsonDeserializer {
        // ...
    }

}

静态文件添加哈希值 


注意 如果你使用JBoss,你需要声明webjars-locator-jboss-vfs 依赖而不是webjars-locator-core。否则,所有Webjars都会解析为 404
  • 要使用缓存清除,以下配置会为所有静态资源配置缓存清除解决方案,
  • 从而有效的在URL中添加内容哈希  
  • 设置hash值url可以快速1、添加历史记录  2、记录滚动条位置
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**

测试


spring boot 2.2 默认采用junit5,使用junit4移除exclusion即可

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
  • 测试异常 

         找不到主类配置classes,端口占用配置webEnviroment 随机端口

    @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
  • junit4 
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserTest{
    
    @Autowired
    private UserService userService;

    @Test
    public void result() {
        userService.findAll();
    }
  • junit5 

@SpringBootTest
public class UserTest{
    
    @Autowired
    private UserService userService;

    @Test
    public void result() {
        userService.findAll();
    }

CORS支持


跨源资源共享 (CORS)是大多数浏览器实现 的W3C规范,允许您以灵活的方式指定授权何种跨域请求,而不是使用一些安全性较低且功能较弱的方法,如IFRAME或JSONP。 从版本4.2开始,Spring MVC 支持CORS。

@Configuration
public class MyConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/api/**");
            }
        };
    }
}

动态url


@RestController
@RequestMapping("user")
public class MyRestController {

 @GetMapping("{type}")
    public User getUser(@PathVariable String type) {
        
    }

}

下一篇: Spring WebFlux

你可能感兴趣的:(spring-boot)