一、判空
@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 | 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注 |