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
-
基于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中几种注入方法的一些个人看法
前言 最近在知乎上面看到一篇关于程序员面试的问题,面试官问我们一般有几种注入的方法,这几种注入的方法分别在什么时候运用比合理,当时我看到这个时候懵逼了,由于我自己也是刚刚接触springboot不久,所以就自己在平时运用的上面总结了一些知识点常用的几种springboot的注入方法,由于我是一个小萌新,所只要是能够起道注入的方法的注解我都列出来,有可能会有错,希望大家能够及时提出来我来解决: @Autowired @Resource @Component @Configuration @Qual
-
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 =
随机推荐
- 收集了一些非主流个性图片
- Javascrp中几个常用的字符串验证
- itchat和matplotlib的结合使用爬取微信信息的实例
- ASP.NET中DataTable与DataSet之间的转换示例
- 详解Django缓存处理中Vary头部的使用
- python将MongoDB里的ObjectId转换为时间戳的方法
- C#.Net基于正则表达式抓取百度百家文章列表的方法示例
- JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
- 简单的Linux查找后门思路和shell脚本分享
- 复数乘法中的结构体赋值实现代码
- PHP实现的加密解密处理类
- js日期时间补零的小例子
- 非常好的js代码
- Android横竖屏幕切换生命周期详解
- C语言数据结构 双向链表的建立与基本操作
- 深入浅出23种设计模式
- Angular实现的table表格排序功能完整示例
- 解决Mac OS X 自带PHP环境gd库扩展缺少freetype的问题
- DataFrame 将某列数据转为数组的方法
- 详解vue 命名视图