参数校验Validation注解

注解 功能
@AssertFalse 可以为null,如果不为null的话必须为false
@AssertTrue 可以为null,如果不为null的话必须为true
@DecimalMax 设置不能超过最大值
@DecimalMin 设置不能超过最小值
@Digits 设置必须是数字且数字整数的位数和小数的位数必须在指定范围内
@Future 日期必须在当前日期的未来
@Past 日期必须在当前日期的过去
@Max 最大不得超过此最大值
@Min 最大不得小于此最小值
@NotNull 不能为null,可以是空
@Null 必须为null
@Pattern 必须满足指定的正则表达式
@Size 集合、数组、map等的size()值必须在指定范围内
@Email 必须是email格式
@Length 长度必须在指定范围内
@NotBlank 字符串不能为null,字符串trim()后也不能等于“”
@NotEmpty 不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“”
@Range 值必须在指定范围内
@URL 必须是一个URL

参考链接

ResponseBodyAdvice

实现ResponseBodyAdvice接口再配合@ControllerAdvice注解可拦截并自定义response返回的结果。

SpringMVC返回json报错(坑!!!)

为让springmvc返回json(spring版本5.3.8),在pom中引入依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.12.3</version>
</dependency>

自定义转换器(非必须)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* @author CZM
* @create 2021/7/3
*/
public class MyHttpMessageConverter extends MappingJackson2HttpMessageConverter {
@Override
protected void writeInternal (Object object,
HttpOutputMessage outputMessage) throws IOException,
HttpMessageNotWritableException {
// 使用 Jackson 的 ObjectMapper 将 Java 对象转换成 Json String
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString (object);
outputMessage.getBody().write (json.getBytes ());
}
}

修改springmvc配置

1
2
3
4
5
<mvc:annotation-driven>
<mvc:message-converters >
<bean class="com.czm.converter.MyHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>

结果报错

1
2
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter': Cannot create inner bean 'com.czm.converter.MyHttpMessageConverter#0' of type [com.czm.converter.MyHttpMessageConverter] while setting bean property 'messageConverters' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.czm.converter.MyHttpMessageConverter#0': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.czm.converter.MyHttpMessageConverter] from ClassLoader [ParallelWebappClassLoader

百度好久。最终发现json包没引入lib目录下(原因不知)!!!手动添加即可。

image-20210703135316350