验证
在 Spring Data REST 中有两种方式注册 Validator
实例:通过 bean 名称自动装配或手动注册验证器。对于大多数情况,简单的 bean 名称前缀风格就足够了。
为了告诉 Spring Data REST 你想要将特定的 Validator
分配给特定的事件,你可以在 bean 名称前加上相应的事件前缀。例如,如果要在将 Person
类的新实例保存到存储库之前对其进行验证,你可以在 ApplicationContext
中声明一个 Validator<Person>
的实例,并将其 bean 名称设置为 beforeCreatePersonValidator
。由于 beforeCreate
前缀匹配 Spring Data REST 中的已知事件,因此该验证器会被绑定到正确的事件上。
手动分配验证器
如果你不想使用 bean 名称前缀的方法,你需要在配置中注册一个验证器的实例,该实例负责在正确的事件后调用验证器。在你实现了 RepositoryRestConfigurer
的配置中,重写 configureValidatingRepositoryEventListener
方法,并在 ValidatingRepositoryEventListener
上调用 addValidator
,传递你希望触发此验证器的事件以及验证器的实例。以下示例展示了如何做到这一点:
@Override
void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener v) {
v.addValidator("beforeSave", new BeforeSaveValidator());
}