错误提示
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.Despite circular references being allowed, the dependency cycle between beans could not be broken. Update your application to remove the dependency cycle.
- 问题是两个类互相调用,引发了循环依赖
解决方法:
- 简单方式
在注入的时候加上注解 @Lazy
@Lazy
EmployeeManagementService employeeManagementService;
如果注解不行:
- 暴力方式,在配置文件中,添加
spring:
main:
allow-circular-references: true
- 如果暴力方法没有解决,可以通过反射机制来解决:
EmployeeManagementService employeeManagementService;
//解决循环依赖
public EmployeeManagementService getEmployeeManagementService(){
this.employeeManagementService=SpringUtil.getBean(EmployeeManagementService.class);
return employeeManagementService;
}
SpringUtil可以用hutool的
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.2</version>
</dependency>
也可以用xin.altitude.cms.common的SpringUtils
<dependency>
<groupId>xin.altitude.cms.common</groupId>
<artifactId>ucode-cms-common</artifactId>
<version>1.3.4</version>
</dependency>
如果找不到这个依赖可以添加
<repositories>
<repository>
<id>public</id>
<name>maven nexus</name>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
参考网址:https://www.jb51.net/article/238474.htm
版权声明:本文为q1353122328原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。