我构建了Spring服务(Spring4.0和Java8),并且我有一个雇员REST服务,其中雇员类中有以下属性:名称、年龄、性别、薪资、指定、company_id、holiday_entitlement、manager_name & country。
我希望使用Spring4.0编写一个验证层,验证需要基于员工所在国家的动态
验证期望
问题
鉴于上述验证要求,我想了解Spring中是否有任何特定的类允许动态验证,例如基于国家的验证。
何时调用验证,立即将我的JSON在spring或服务层(类注释@Service)中转换为Java对象。
C.我应该在Employee中仍然使用spring验证JSR 303注释,还是应该在不同的类(尤其是对于强制属性)中进行验证?
发布于 2016-10-03 03:44:18
答:据我所知,在Spring中没有特殊的验证层,使用的是Hibernate作为参考实现的javax.validation。真正容易实现的是方法验证,例如,您可以查看https://github.com/flexguse/validation-violation-checker-demo。
B:您可以使用@ validation注释直接在Controller方法中进行JSR303验证,但我更愿意在服务方法中进行验证,这样您就可以更好地控制在出现验证错误时响应什么->,参见https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
C: JSR 303注释应该足够了,您需要创建自己的验证注释和验证实现,应该将其添加到Employee POJO ->中(参见https://softwarecave.org/2014/03/27/custom-bean-validation-constraints/ )。
不要忘记为验证编写JUnit测试!
发布于 2016-10-07 07:04:11
我不认为有一个特殊的验证层能够百分之百地响应您的需求,但例如,在Spring中,我们有一个验证器接口org.springFramework.validation.Validator
。
它使您可以动态定义规则,使用验证方法验证数据,并通过在控制器中创建绑定器和@Valid来调用数据。
https://stackoverflow.com/questions/39830349
复制相似问题