Spring Boot MongoRepository 忽略验证

mik*_*keb 3 java validation spring mongodb spring-boot

我有一个运行良好的 Mongodb 存储库:

@RepositoryRestResource(collectionResourceRel = "audits", path = "audits")
public interface AuditRepository extends MongoRepository<Audit, String> {
}
Run Code Online (Sandbox Code Playgroud)

我有一个豆子,Audit那就是:

@Data
@Document
@JsonIgnoreProperties(ignoreUnknown = true)
@Validated
public class Audit {
    @Id private String id;

    @NotNull
    private Date start;

    @NotNull
    private Date end;
}
Run Code Online (Sandbox Code Playgroud)

我将 Lombok 用于 getter/setter。

我希望 Repository 验证Auditbean,但它null在开始和结束日期保存了一个审计 bean 。

我将此添加到build.gradle

compile("org.springframework.boot:spring-boot-starter-validation")

如何告诉 REST 服务使用验证?我看不到任何东西RepositoryRestConfiguration会打开它......

小智 6

您必须导入验证库:

行家

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.2.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

或 gradle

compile group: 'org.hibernate', name: 'hibernate-validator', version: '5.4.2.Final'
Run Code Online (Sandbox Code Playgroud)

并且您必须配置两个bean:

@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
    return new LocalValidatorFactoryBean();
}

@Bean
public ValidatingMongoEventListener validatingMongoEventListener(LocalValidatorFactoryBean lfb) {
    return new ValidatingMongoEventListener(lfb);
}
Run Code Online (Sandbox Code Playgroud)