Spring4.0中的动态验证
我已经构建了一个SpringREST服务(Spring4.0和Java8),我还有一个Employee REST服务,其中Employee类具有以下属性 姓名、年龄、性别、工资、职务、公司id、假期权利、经理姓名和国家 我希望使用Spring4.0编写一个验证层,该验证需要基于员工所在国家/地区进行动态验证 预期验证Spring4.0中的动态验证,spring,validation,bean-validation,spring-validator,Spring,Validation,Bean Validation,Spring Validator,我已经构建了一个SpringREST服务(Spring4.0和Java8),我还有一个Employee REST服务,其中Employee类具有以下属性 姓名、年龄、性别、工资、职务、公司id、假期权利、经理姓名和国家 我希望使用Spring4.0编写一个验证层,该验证需要基于员工所在国家/地区进行动态验证 预期验证 员工姓名、年龄、性别和国家是强制性的 员工性别必须为男性或女性 员工年龄不得超过70岁,也不得低于18岁 比如说 如果国家为英国,则假期权利不得超过25天 如果国家为美国,则假期权
C.我应该在我的员工POJO中仍然使用spring bean validations JSR 303注释,还是应该在另一个类esp中对强制属性进行验证?a:据我所知,spring中没有特殊的验证层,javax.validation使用Hibernate作为参考实现。真正容易实现的是方法验证,作为一个例子,您可以看一下 B:您可以使用@Valid method annotation直接在Controller方法中进行JSR303验证,但我更愿意在您的服务方法中进行验证,这样您就可以更好地控制在验证错误时响应的内容->请参阅 C:JSR303注释应该足够了,您需要创建自己的验证注释和验证实现,并将其添加到Employee POJO->请参见
不要忘记为验证编写JUnit测试 我认为没有一个特殊的验证层100%响应您的需求,但例如,在SpringMVC中,我们有一个验证接口
org.springFramework.validation.validator
它使您能够使用validate方法动态定义规则来验证数据,并通过在控制器中创建binder和@Valid来调用它