gpt4 book ai didi

Spring Boot 自定义约束验证器未注入(inject)服务

转载 作者:行者123 更新时间:2023-12-04 04:38:05 25 4
gpt4 key购买 nike

这是我的自定义验证器,用于检查某些字段的可用性。 UserRepository 为空,因此验证器没有注入(inject)它。

public class AvailableValidator implements ConstraintValidator<Available,String> {

@Autowired
private UserRepository userRepository;

private Available.Field type;

public void initialize(Available usernameAvailable) {
this.type = usernameAvailable.type();
}

public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
if (userRepository == null) System.out.println("\n\n------USER REPOSITORY IS NULL-------\n\n");


switch (type){
case EMAIL:
return userRepository.findByEmail(s)==null;
case NUMBER:
return userRepository.findByNumber(s)==null;
case NAME:
return userRepository.findByName(s)==null;
default:
return false;
}
}
}

我已经阅读了我必须设置验证器工厂的类似线程。
我已经这样做了:
@SpringBootApplication
public class Application {

public static void main(String[] args){
SpringApplication.run(Application.class, args);
}

@Bean
public Validator validator(){
return new LocalValidatorFactoryBean();
}
}

但它仍然不起作用。 userRepository 为空。可能我配置错了,第一次尝试java配置。

最佳答案

作为禁用 Hibernates 验证的替代方法,您是否尝试过:

@Primary
@Bean
public Validator validator(){
return new LocalValidatorFactoryBean();
}

这将按照建议提供您的验证器偏好 here .

迈克·科瓦尔斯基

关于Spring Boot 自定义约束验证器未注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32127227/

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