Java 通过检查字典进行Spring验证

Java 通过检查字典进行Spring验证,java,spring,hibernate,validation,Java,Spring,Hibernate,Validation,使用SpringRestController和hibernate验证程序 需要创建一些验证注释,以检查某些字典(预设数组或某些数据库)中显示的验证字段 例如,我有一些豆子 @Service public class MyDict { public boolean containsWord(String word) { ... } } 还有一些数据,我查一下 public class ResponseData { @IsInDictionary(MyDic

使用SpringRestController和hibernate验证程序

需要创建一些验证注释,以检查某些字典(预设数组或某些数据库)中显示的验证字段

例如,我有一些豆子

@Service
public class MyDict {

   public boolean containsWord(String word) {
       ...
   }
} 
还有一些数据,我查一下

public class ResponseData {

    @IsInDictionary(MyDict.class)
    private String word;

}
当我直接调用hibernate验证,或者在RequestMapping方法中使用
@Valid
注释时,我希望验证器调用MyDict bean方法containsSwarm(word)


有人有什么想法吗?

您需要定义自己的注释,然后定义自己的
验证器,在那里执行验证逻辑(在本例中,是字典查找)

您可以在此处阅读更多关于此的信息:

创建自己的注释后,只需扩展
ConstraintValidator
,就可以开始了。方法
isValid()
需要在您提到的逻辑中执行:
containsbrow(word)


很好的一点是,您的自定义验证器可以是一个Spring管理的bean,因此您可以自由地向其中注入内容,例如,执行DB查找。因此,在这种情况下,您需要插入字典并在那里执行检查。

如果我理解正确,如果我将自己的验证器称为Springbean,我的bean(不是我类的另一个实例)将用作验证器?我今天想检查一下,但我怀疑@dmitryvim如果你创建自己的注释,有一个预定义的机制在使用它进行验证。简单地说,您只需要适当地扩展ConstraintValidator,就可以开始了。我最近做过这件事,效果很好:)