gpt4 book ai didi

java - Spring:验证整个对象的方法

转载 作者:行者123 更新时间:2023-12-01 12:56:32 24 4
gpt4 key购买 nike

假设我使用一些验证注释定义了 Entity 类:

public class Entity {
@Column(unique = true)
@NotNull
private String login;

@NotNull
private String password;

@Email
private String email;
}

我知道可以使用参数中的 @Valid 注释以及关联的错误对象来验证新的 Entity

但是,我需要在不同的方法中间创建一个新的Entity,并且我需要验证构造的实体是否正确(它与在定义中使用注释声明的限制相匹配)类):

public whateverMethod(...) {
Entity e = new Entity(a, b, c, ...);
validate(e); // I need something like this
}

我在 Spring 文档中找不到类似的内容。

有什么帮助吗?

最佳答案

您可以使用 LocalValidatorFactoryBean 注入(inject) Validator 对象,然后使用该 validator 来验证您的实体。

Bean 声明:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

您的服务:

@Service
public class fooService {

@Autowired
Validator validator

public whateverMethod(...) {
Entity e = new Entity(a, b, c, ...);
Set<ConstraintViolation<Entity>> = validator.validate(e);
}
}

如果你不想注入(inject)bean,你可以这样做:

public class fooClass {

public whateverMethod(...) {
Entity e = new Entity(a, b, c, ...);

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();

Set<ConstraintViolation<Entity>> = validator.validate(e);
}
}

请注意,JSR-303 提供程序(例如 Hibernate Validator)预计会出现在类路径中,并且会被自动检测到。

关于java - Spring:验证整个对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com