前言
今天在写项目时,(我的项目tomcat版本为10.几,jdk版本为17)想在项目中使用优雅的@Valid进行参数校验,从而代替if else,但是当我写好后,@valid参数校验代码后,却没起作用,debug了一下午,终于解决了,且听我娓娓道来
正题开始
从写代码开始,我就注意到@NotNull注解有两个来源,一个是javax 一个是jakarta
我一开始使用的是javax的@NotNull注解,后面参数校验不起作用时也忘了换成jakarta试试,
结果,结果显而易见,参数校验不起作用。我左debug 右debug,最后换成jakarta的@NotNull试试后,参数校验终于起作用了,泪目了,4小时了。
注意!
但是我@Valid注解使用javax jakarta却都能起作用,这东西可真离谱,一会兼容,一会不兼容
总结
springboot项目中tomcat版本为10.几时,建议使用jakarta包(因为javax中的某些注解在tomcat 10中不起作用)(tomcat版本10时兼容javax和jakarta)
在tomcat版本为9.几时,使用javax包(因为你不可能使用jakarta包,版本不兼容,因为jakarta是javax迭代而来,且javax不再被维护目前)
如何查看内嵌tomcat版本为多少,可以看我上一篇文章,或者自己去搜搜