兼容问题
spring-boot-starter-parent切换回1.5.2.RELEASE版本
因为1.5.4.RELEASE、1.5.5.RELEASE、1.5.6.RELEASE、1.5.7.RELEASE、2.0.0.M1、2.0.0.M2、2.0.0.M3都存在使用spring-boot-starter-data-redis时,会出现异常
java.lang.NoSuchMethodError: org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource.<init>
异常
请查看https://github.com/spring-projects/spring-boot/issues/9606
外部 Tomcat 容器部署
外部 Tomcat 等容器部署war,要继承 SpringBootServletInitializer 类
war部署要重写SpringBootServletInitializer的configure方法,可以不要main方法,main方法是jar部署时候会执行的
1 | import org.springframework.boot.autoconfigure.SpringBootApplication; |
attach=false
1 | <plugin> |
spring-boot升级到2.0
- 弃用WebMvcConfigurerAdapter,替换成WebMvcConfigurer
1 |
|
在 spring-boot 2.0 中需要注意,因为使用的是 spring 5,原先的方法是继承WebMvcConfigurerAdapter抽象类,现在是直接扩展 WebMvcConfigurer 这个接口。原先的方式很能生效,不过已经被 spring 5弃用了(@Deprecated)
1 |
|
- 其他
@RequestBody
- 使用 @RequestBody 注解时,如果注解的参数没有传入,则会抛出
org.springframework.http.converter.HttpMessageNotReadableException
异常 - 配合hibernate-validator不起作用的问题
在参数前面使用org.springframework.validation.annotation.Validated
注解,或者javax.validation.Valid
注解均可
1 | import lombok.AllArgsConstructor; |
@RequestParam
- 使用 @RequestParam 注解时,如果注解的参数没有传入,则会抛出
org.springframework.web.bind.MissingServletRequestParameterException
异常 - 配合hibernate-validator不起作用的问题
要注册 MethodValidationPostProcessor Bean,并且在类上面使用org.springframework.validation.annotation.Validated
注解
注意:使用
javax.validation.Valid
注解对RequestParam对应的参数进行注解,是无效的,需要使用@Validated注解来使得验证生效
1 |
|
至此,Bean Validator 和 hibernate-validator的@Size、@Min、@Max、@Length、@NotBlank等注解就生效了