Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OptionalValidatoryFactoryBean-Spring多bean实例化-多模块Maven项目_Java_Spring_Spring Boot_Spring Mvc - Fatal编程技术网

Java OptionalValidatoryFactoryBean-Spring多bean实例化-多模块Maven项目

Java OptionalValidatoryFactoryBean-Spring多bean实例化-多模块Maven项目,java,spring,spring-boot,spring-mvc,Java,Spring,Spring Boot,Spring Mvc,我面临着spring boot(2.3.4.RELEASE)应用程序无法加载上下文的问题。这是在它尝试注入javax.validator.validator接口的实例时发生的 原因是,实现类org.springframework.validation.beanvalidation.OptionalValidatoryFactoryBean有多个实例,导致NoniqueBeandDefinitionException 虽然我可以在应用程序上下文中打印bean列表,并将所有四个bean都命名为 Op

我面临着spring boot(2.3.4.RELEASE)应用程序无法加载上下文的问题。这是在它尝试注入
javax.validator.validator
接口的实例时发生的

原因是,实现类
org.springframework.validation.beanvalidation.OptionalValidatoryFactoryBean
有多个实例,导致
NoniqueBeandDefinitionException

虽然我可以在应用程序上下文中打印bean列表,并将所有四个bean都命名为
OptionalValidatorFactoryBean#0
通过
OptionalValidatorFactoryBean#4

因为我无法在这里提供整个依赖关系树,所以我提供了一些我们导入的依赖关系,我认为这些依赖关系与验证注入有关

  • spring上下文5.2.9.1版本
  • hibernate验证程序6.1.5.FINAL
  • jakarta.validation-api 2.0.2

由于这是一个Spring API类,并且依赖项注入发生在我们导入的另一个API类中,因此我无法使用
@Qualifier
@Primary
。因此,我希望找到并修复多重实例化的来源。不幸的是,由于专有问题,我无法提供大量信息。我几乎花了一天的时间调试这些信息,但找不到太多的信息。有人能帮我继续吗?

你是在使用maven进行依赖关系管理吗?您是否尝试排除导致冲突的依赖项?我们使用maven。但是多次实例化的类只来自一个jar(spring上下文),并且这个jar只有一个版本被解析。在加载应用程序上下文期间,spring实例化了来自多个模块的同一类的多个实例。我正试图从这些实例化发生的地方找到一种方法,以便删除它们。我不认为我们可以删除我在这里提到的任何依赖项更新-通过在自定义配置类中声明相同类型的新主Bean来解决。仍然有兴趣知道我们是否可以看到spring加载bean实例的层次结构您正在使用spring Boot,但列出了各个验证jar,这很奇怪。您应该使用
springbootstarter验证
,其中包括必要的验证依赖项。这同样适用于已经以不同方式拉入的
spring上下文
依赖项。多次实例化的类不应该发生,可能是由于您自己正在进行的某些配置(导入、使用另一个框架等)。因此,在没有看到应用程序的实际配置的情况下,无法回答这一问题。谢谢。我列出了各个罐子,因为我看到这些罐子被用作验证的一部分。问题是,这是一个现有的多模块maven应用程序,依赖关系混乱不堪。对我来说,一种方法是分析这棵树并进行清理,我在一定程度上做到了这一点。现在,对于多个bean的问题,我能够定义一个新的@primarybean。正如我提到的,我无法从工作网络导出配置。