Spring Boot产生环形注入的解决方案
目录
- Spring Boot产生环形注入
- 错误产生原因
- 解决方法
- Spring Boot循环注入的坑
- 一般循环注入的原因是
- 解决办法
Spring Boot产生环形注入
***************************
APPLICATION FAILED TO START
***************************Description:
The dependencies of some of the beans in the application context form a cycle:
| MyController (field private com.zhxy.service.AService com.zhxy.controller.MyController.BService)
↑ ↓
| BService
└─────┘
启动spring boot报以上错误
错误产生原因
BService里面注入AService使用,AService里面又注入BService使用
解决方法
在BService的实现类对 AService 加上Spirng的注解 @Lazy
@Autowired @Lazy private AService aService ;
Spring Boot循环注入的坑
一般循环注入的原因是
A依赖注入b,b注入A形成一个闭环,导致spring在创建bean的时候具体不知道先创建哪一个,会抛出bean创建异常
解决办法
将控制台最后打印的bean复制出来,然后全局搜索项目,在所有注入这个bean的地方加上@Lazy注解
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
使用Springboot注入带参数的构造函数实例
我们使用@Service注解一个service,默认注入的是不带参的构造函数,如果我们需要注入带参的构造函数,怎么办? 使用@Configuration+ @Bean注解来实现注入: @Configuration public class BlockChainServiceConfig { @Bean BlockChainService blockChainService(){ return new BlockChainService(1); } } service类 public class
-
关于spring boot中几种注入方法的一些个人看法
前言 最近在知乎上面看到一篇关于程序员面试的问题,面试官问我们一般有几种注入的方法,这几种注入的方法分别在什么时候运用比合理,当时我看到这个时候懵逼了,由于我自己也是刚刚接触springboot不久,所以就自己在平时运用的上面总结了一些知识点常用的几种springboot的注入方法,由于我是一个小萌新,所只要是能够起道注入的方法的注解我都列出来,有可能会有错,希望大家能够及时提出来我来解决: @Autowired @Resource @Component @Configuration @Qual
-
基于SpringBoot构造器注入循环依赖及解决方式
1. 循环依赖是什么? Bean A 依赖 B,Bean B 依赖 A这种情况下出现循环依赖. Bean A → Bean B → Bean A 更复杂的间接依赖造成的循环依赖如下. Bean A → Bean B → Bean C → Bean D → Bean E → Bean A 2. 循环依赖会产生什么结果? 当Spring正在加载所有Bean时,Spring尝试以能正常创建Bean的顺序去创建Bean. 例如,有如下依赖: Bean A → Bean B → Bean C Spring
-
Spring Boot产生环形注入的解决方案
目录 Spring Boot产生环形注入 错误产生原因 解决方法 Spring Boot循环注入的坑 一般循环注入的原因是 解决办法 Spring Boot产生环形注入 *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context for
-
spring boot静态变量注入配置文件详解
本文实例为大家分享了spring boot静态变量注入配置文件的具体代码,供大家参考,具体内容如下 spring 静态变量注入 spring 中不支持直接进行静态变量值的注入,我们看一下代码: @Component(value = "KafkaConfig") @ConfigurationProperties(prefix = "baseConfig") public class KafkaConfig { private static String logBrok
-
解决Spring Boot 多模块注入访问不到jar包中的Bean问题
情景描述 一个聚合项目spring-security-tutorial,其中包括4个module,pom如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://mav
-
spring boot拦截器注入不了java bean的原因
一.如何实现拦截器 在Spring Boot项目中,拦截器经常被用来做登陆验证,日志记录等操作.拦截器是Spring提供的,所以可以将拦截器注成bean,由IOC容器来管理.实现拦截器的方式很简单,主要由以下两个步骤: 自定义拦截器类实现HandlerInterceptor接口 自定义WebMvc配置类实现WebMvcConfigurer接口,添加自定义拦截器类 简要实现代码如下: 自定义拦截器 LoginInterceptor: public class LoginInterceptor im
-
Spring Boot 项目启动失败的解决方案
Spring Boot 项目是不是经常失败,显示一大堆的错误信息,如端口重复绑定时会打印以下异常: *************************** APPLICATION FAILED TO START *************************** Description: Embedded servlet container failed to start. Port 8080 was already in use. Action: Identify and stop the
-
Spring Boot文件上传最新解决方案
一.创建一个简单的包含WEB依赖的SpringBoot项目 pom.xml内容: <!-- Spring Boot web启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jsp --> <d
-
Spring Boot集成Quartz注入Spring管理的类的方法
在Spring Boot中使用Quartz时,在JOB中一般需要引用Spring管理的Bean,通过定义Job Factory实现自动注入. Spring有自己的Schedule定时任务,在Spring boot中使用的时候,不能动态管理JOB,于是就使用Quartz来实现. 在Spring Boot中配置Quartz: import java.io.IOException; import java.util.Properties; import org.springframework.bean
-
基于Spring boot @Value 注解注入属性值的操作方法
本文主要介绍Spring @Value 注解注入属性值的使用方法的分析,文章通过示例代码非常详细地介绍,对于每个人的学习或工作都有一定的参考学习价值 在使用spring框架的项目中,@Value是经常使用的注解之一.其功能是将与配置文件中的键对应的值分配给其带注解的属性.在日常使用中,我们常用的功能相对简单.本文使您系统地了解@Value的用法. @Value注入形式 根据注入的内容来源,@ Value属性注入功能可以分为两种:通过配置文件进行属性注入和通过非配置文件进行属性注入. 非配置文件注
-
Spring Boot Maven Plugin打包异常解决方案
[背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没有使用@SpringBootApplication注解),pom.xml如下 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin<
-
Spring boot工具类静态属性注入及多环境配置详解
由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理.但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便. private static final String PUBCHAT_HOST = "127.0.0.2"; // private static final String PUBCHAT_HOST =
随机推荐
- jquery下实现overlay遮罩层代码
- 谈如何与客户进行网站构建的沟通
- JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
- PHP中的按位与和按位或操作示例
- php 利用array_slice函数获取随机数组或前几条数据
- 解析php入库和出库
- 使用use index优化sql查询的详细介绍
- windows下mysql 5.7版本中修改编码为utf-8的方法步骤
- 梯度下降法介绍及利用Python实现的方法示例
- web标准常见问题集合4
- ip138之asp小偷程序代码
- javascript一点特殊用法
- Linux中关于inode的知识总结
- SQL Server 置疑、可疑、正在恢复等情况分析
- 用jQuery向div中添加Html文本内容的简单实现
- jQuery列表拖动排列具体实现
- jquery判断checkbox是否选中及改变checkbox状态的实现方法
- jQuery 拖动层(在可视区域范围内)
- 表单提交验证类
- 详解JS几种变量交换方式以及性能分析对比