Java 8 java版本“;1.8.0“U 121”;请求的bean当前正在创建中:是否存在无法解析的循环引用?

Java 8 java版本“;1.8.0“U 121”;请求的bean当前正在创建中:是否存在无法解析的循环引用?,java-8,spring-bean,Java 8,Spring Bean,当我用 java版本“1.8.0_112”编译和部署良好 另外,如果我使用java版本“1.8.0_121”编译,并使用 java版本“1.8.0_112”也适用 但是当我编译和部署同一个应用程序时 java版本“1.8.0_121” 它为一个服务提供了一个错误: Error creating bean with name 'namesServiceImpl': Injection of autowired dependencies failed; nested exception is org

当我用 java版本“1.8.0_112”编译和部署良好

另外,如果我使用java版本“1.8.0_121”编译,并使用 java版本“1.8.0_112”也适用

但是当我编译和部署同一个应用程序时 java版本“1.8.0_121”
它为一个服务提供了一个错误:

Error creating bean with name 'namesServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private a.b.c.backend.services.account.PersonService a.b.c.backend.services.serviceimpl.NamesServiceImpl.personService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'CISExpressionHandler' defined in URL

[jar:file:/usr/local/tomcat7-7/webapps/ServicesApp/WEB-INF/lib/E2Services.jar!/META-INF/spring/applicationContext-security.xml]: Cannot resolve reference to bean 'CISPermissionEvaluator' while setting bean property 'permissionEvaluator'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'CISPermissionEvaluator': Requested bean is currently in creation: Is there an unresolvable circular reference?

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private a.b.c.backend.services.ciscase.CaseService a.b.c.backend.services.security.permissionEvaluators.CaseOwnerPermission.caseService; nested exception is org.springframework.beans.factory.BeanCreationException
我能找到的一个解释是:

异常是否发生取决于bean的创建顺序。我们在web.xml中用下面类似的配置加载它们 (/usr/local/tomcat7-7/webapps/ServicesApp/WEB-INF/WEB.xml)


上下文配置位置
classpath*:META-INF/spring/applicationContext*.xml
XML文件将由XmlWebApplicationContext类加载,文件的加载顺序不保证。 它只是从文件系统加载文件。问题就在这里。 如果该类首先加载应用程序上下文文件,则没有问题,因为当您的bean用于Spring安全性的构造注入时,它们已经被创建。但是,如果它首先加载Spring安全上下文文件,就会出现循环引用问题,因为Spring会在创建bean之前尝试在构造函数注入中使用bean

如何解决这个问题?

强制xml文件的加载顺序。使用在应用程序上下文文件末尾加载安全上下文xml文件

<import resource="applicationContext-security.xml">. 
现在,这是如何随着JDK版本更改而引入的?我对此没有解释

参考:


问:如何在部署时获得bean的顺序

此解决方案不起作用,即如上所述强制加载顺序不会使webApp在ALLI出现。我比较了一个工作的Services.jar和一个非工作的,并且:BatchServiceImpl.java\\@Inject private WorkflowTaskService WorkflowTaskService;322C32425<此.spResolutionService.ReturnCaseToPresolution(caseId,I90SPFlagnum.已从\u中删除\u,等待\u处理\u批准);在非工作jar中缺少,因此哪个jar提供@Inject??此解决方案不起作用,即,如上所述强制加载顺序不会使webApp出现。我将工作Services.jar与非工作jar进行了比较,并且:BatchServiceImpl.java\\@Inject private WorkflowTaskService WorkflowTaskService;322C32425<此.spResolutionService.ReturnCaseToPresolution(caseId,I90SPFlagnum.已从\u中删除\u,等待\u处理\u批准);在不工作的jar中缺少,那么哪个jar提供@Inject??
<import resource="applicationContext-security.xml">.