核心内容摘要
Spring中有哪些地方用到了反射
在 Web 应用三层架构体系中表述层负责接收浏览器提交的数据我们需要在表述层对数据进行检查将错误的数据隔绝在业务逻辑层之外。
校验概述JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架它已经包含在 JavaEE
0 标准中。
JSR 303 通过在 Bean 属性上标注类似于 NotNull、Max 等标准的注解指定校验规则并通过标准的验证接口对Bean进行验证。
注解规则Null标注值必须为 nullNotNull标注值不可为 nullAssertTrue标注值必须为 trueAssertFalse标注值必须为 falseMin(value)标注值必须大于或等于 valueMax(value)标注值必须小于或等于 valueDecimalMin(value)标注值必须大于或等于 valueDecimalMax(value)标注值必须小于或等于 valueSize(max,min)标注值大小必须在 max 和 min 限定的范围内Digits(integer,fratction)标注值值必须是一个数字且必须在可接受的范围内Past标注值只能用于日期型且必须是过去的日期Future标注值只能用于日期型且必须是将来的日期Pattern(value)标注值必须符合指定的正则表达式JSR 303 只是一套标准需要提供其实现才可以使用。
Hibernate Validator 是 JSR 303 的一个参考实现除支持所有标准的校验注解外它还支持以下的扩展注解注解规则Email标注值必须是格式正确的 Email 地址Length标注值字符串大小必须在指定的范围内NotEmpty标注值字符串不能是空字符串Range标注值必须在指定的范围内Spring
0 版本已经拥有自己独立的数据校验框架同时支持 JSR 303 标准的校验框架。
Spring 在进行数据绑定时可同时调用校验框架完成数据校验工作。
在SpringMVC 中可直接通过注解驱动EnableWebMvc的方式进行数据校验。
Spring 的 LocalValidatorFactoryBean 既实现了 Spring 的 Validator 接口也实现了 JSR 303 的 Validator 接口。
只要在Spring容器中定义了一个LocalValidatorFactoryBean即可将其注入到需要数据校验的 Bean中。
Spring本身并没有提供JSR 303的实现所以必须将JSR 303的实现者的jar包放到类路径下。
配置 EnableWebMvc后SpringMVC 会默认装配好一个 LocalValidatorFactoryBean通过在处理方法的入参上标注 Validated 注解即可让 SpringMVC 在完成数据绑定后执行数据校验的工作。
需要的依赖!-- 校验注解 --dependencygroupIdjakarta.platform/groupIdartifactIdjakarta.jakartaee-web-api/artifactIdversion
9.
0/versionscopeprovided/scope/dependency!-- 校验注解实现--!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator --dependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator/artifactIdversion
8.
0.
Final/version/dependency!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator-annotation-processor --dependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator-annotation-processor/artifactIdversion
8.
0.