一、判空

@NotEmpty

用于集合类

不能为null,且Size>0

@NotBlank

用于String

不能为null,且trim()之后size>0

@NotNull

用于基本类型

不能为null,没有Size的约束

基本类型上面用NotEmpty或者NotBlank,出现如下错误:

javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer

二、时间转换

@DateTimeFormat

用于前端传给后端

@DateTimeFormat(pattern = "yyyy-MM-dd")

@JsonFormat

用于后端传给前端,是jackson注解

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")

@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")

@JSONField

用于后端传给前端,是fastjson注解

@JSONField(format=“yyyy/MM/dd HH:mm:ss”)

如果@JsonFormat 不生效,可以用@JSONField

可能是用了ResponseBodyAdvice一个接口,自定义一个类,实现这个接口后,就可以对controller层返回的数据统一处理了,类似拦截器

可能原因:

1、JSONField作用于ResponseBodyAdvice之前,已经把对应的日期属性改成了对应格式的字符串,

2、JsonFormat作用于ResponseBodyAdvice之后,由于属性被ResponseBodyAdvice过滤过一次后,JsonFormat可能就找不到对应的属性了

3、JsonFormat和ResponseBodyAdvice互斥,有了ResponseBodyAdvice,JsonFormat就直接不起作用了。

三、组件

@Service引用了@Component注解,也就是component注解实现的功能@service都能实现,

而@Service是对@Component进一步拓展,被@service注解标注的类会被spring认定是业务逻辑层,里面有spring对业务逻辑层管理的一对逻辑、

@Service

标注业务层组件

@Controller

标注控制层组件

@Repository

标注数据访问组件,即DAO组件

@Component

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注