注入异常解决

这篇博客主要讨论了在Spring Boot应用中遇到的启动异常,包括UnsatisfiedDependencyException和配置读取问题。作者列出了四种可能的原因及相应的解决方案:1) 注入问题,可以通过@Qualifier注解指定所需类;2) 扫描包不包含Service或DAO,可以使用@MapperScan或调整包结构;3) 循环依赖,需要避免或调整依赖关系;4) @FeignClient无法读取配置,需确保配置已正确添加。通过这些解决方案,开发者可以更好地排查和修复Spring Boot启动时遇到的问题。
部署运行你感兴趣的模型镜像

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘queryOrderService’: Unsatisfied dependency expressed through field ‘ebaServApi’; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.taikang.wechat.remote.api.EbaServApi’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

网上查找的问题:
1.注入问题
有两个类实现了xx,所以spring不知道该绑定哪个类,就抛出了错误
解决办法:使用@Qualifie注解,表明哪个类是我们需要的
2.service或dao所在包未被扫描到
SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描,如果Application类所在的包为:com.demo.module,则只会扫描com.demo.module包及其所有子包,如果service或dao所在包不在com.demo.module及其子包下,则不会被扫描
解决办法:在application启动类中加上@MapperScan注解,加上你项目的dao或service所在文件位置即可
3.service循环依赖
解决办法:排除循环依赖即可

我遇到的问题:
4.@FeignClient(name = “”, url = “${config.eba.url}”)读取配置时无法读取到这个配置
解决办法:去把配置添加上

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

### 解决 IntelliJ IDEA 调试时注入异常的问题 在开发过程中遇到依赖注入异常可能是由于多种原因引起的,其中包括循环依赖、构造函数注入方式不恰当或其他配置错误。以下是针对该问题的分析和解决方案。 #### 循环依赖引发的注入异常 当两个或多个类之间存在相互依赖关系时,可能会导致容器无法完成实例化过程并抛出异常。一种可能的解决办法是对某些类进行修改,使其通过Setter方式进行配置而非Constructor方式[^1]。这种方式虽然不是最佳实践,但在特定场景下可以有效解决问题。 如果希望继续使用基于构造器的依赖注入(Constructor-based Dependency Injection),则需确保设计中不存在循环依赖的情况[^2]。可以通过重构代码来打破这种依赖链路,例如引入中间层或者调整对象之间的职责划分。 #### 配置检查与优化建议 除了处理潜在的循环依赖外,还需要仔细审查项目中的Spring配置文件或者其他框架相关的设置项是否存在不当之处。比如: - **Bean定义冲突**:确认是否有重复声明相同名称的bean。 - **作用域问题**:对于prototype类型的beans,在多线程环境下容易出现问题;因此要特别留意其生命周期管理。 另外,在IntelliJ IDEA里开启详细的日志级别可以帮助定位具体哪一步骤出现了错误。前往`File -> Settings -> Build, Execution, Deployment -> Debugger`路径下调整相关参数以便获取更多诊断信息。 ```java // 示例代码展示如何利用setter实现DI代替constructor DI public class ServiceA { private ServiceB serviceB; public void setServiceB(ServiceB serviceB){ this.serviceB = serviceB; } } ``` 上述例子展示了通过提供公共的set方法让外部能够赋值成员变量serviceB的方式替代传统的直接于构造函数内部指定依赖的做法。 #### 总结 综上所述,面对因依赖注入而导致的运行期错误,可以从以下几个方面入手排查并修复: 1. 审视业务逻辑看是否存在隐含的循环引用; 2. 如果确实有必要保留此类结构,则考虑采用Setter Injection作为变通手段之一; 3. 同步核查整个应用上下文中关于组件扫描范围以及初始化顺序等方面的设定是否合理合规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值