解决springboot 循环依赖

错误提示
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版权协议,转载请附上原文出处链接和本声明。