bean with name '**' has been injected int
时间: 2023-05-02 19:06:15 浏览: 190
这个错误是 Spring 框架中的一个典型错误,通常出现在依赖注入(Dependency Injection)的过程中。错误信息大致意思是指,一个名称为 '**' 的 bean 被注入(injected)到了某个组件中。这个错误提示并没有明确指出问题所在,可能会让人感到困惑。
产生这个错误的原因可能很多,其中比较常见的情况包括:
1. 在配置文件中没有定义名称为 '**' 的 bean,导致注入失败。
2. 在配置文件中定义了重名的 bean,在注入时出现了冲突。
3. 注入的容器中没有加载需要注入的 bean。
4. 在注入时尝试注入一个不存在的 bean,或者注入的 bean 的类型与目标类型不匹配,导致类型转换错误。
解决这个问题的方法也有很多,可以根据具体的情况逐一排查,以下是一些常见的解决方法:
1. 检查配置文件中的 bean 定义,确保没有重名或者缺失的情况。
2. 使用不同的 bean 名称,避免因名称冲突造成注入失败。
3. 检查容器的配置,确保注入的 bean 合法并且正确加载。
4. 检查注入的类型是否正确,并进行必要的类型转换。
总之,要解决这个错误,需要具体情况具体分析,并找到具体错误的原因和解决方法。
相关问题
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'esChargeReconciliationVoucherServiceImpl': Bean with name 'esChargeReconciliationVoucherServiceImpl' has been injected into other beans [esChargeReconciliationVoucherServiceImpl] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesForType' with the 'allowEagerInit' flag turned off, for example.
这个错误信息是 Spring 框架中的一个常见错误,称为“循环依赖”。它表示在创建 Bean 对象时,存在两个或多个 Bean 相互依赖,导致无法完成 Bean 的创建过程。在你的例子中,esChargeReconciliationVoucherServiceImpl Bean 被注入到其他 Bean 中,并且这些其他 Bean 又依赖于esChargeReconciliationVoucherServiceImpl Bean。
解决这个问题的方法有以下几种:
1. 通过使用构造函数注入代替属性注入,可以避免循环依赖。
2. 使用@Lazy注解对其中一个Bean进行延迟加载。
3. 使用@DependsOn注解来定义Bean的依赖关系,告诉Spring哪个Bean必须先被创建。
希望这些方法能帮助你解决这个问题。
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'mwsReceiveDetailService': Bean with name 'mwsReceiveDetailService' has been injected into other beans [commonController] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
这是Spring框架中的循环依赖问题。在你的代码中,`mwsReceiveDetailService`这个Bean被注入到了`commonController`中,并且`commonController`也被注入到了`mwsReceiveDetailService`中,形成了循环依赖。
解决这个问题的方法有两种:
1. 修改代码结构,避免循环依赖。可以把两个类中的依赖关系调整一下,比如提取一个接口,然后让`commonController`依赖这个接口而不是`mwsReceiveDetailService`本身。
2. 使用`@Lazy`注解进行懒加载。在注入`mwsReceiveDetailService`到`commonController`时,使用`@Lazy`注解告诉Spring容器在需要该Bean时再去实例化它,而不是在启动时就实例化它。这样可以避免循环依赖问题。示例代码如下:
```
@Service
public class CommonController {
private MwsReceiveDetailService mwsReceiveDetailService;
@Autowired
public void setMwsReceiveDetailService(@Lazy MwsReceiveDetailService mwsReceiveDetailService) {
this.mwsReceiveDetailService = mwsReceiveDetailService;
}
// ...
}
@Service
public class MwsReceiveDetailService {
private CommonController commonController;
@Autowired
public void setCommonController(CommonController commonController) {
this.commonController = commonController;
}
// ...
}
```
阅读全文