当前位置: 首页 > 知识库问答 >
问题:

Spring依赖注入周期

董良策
2023-03-14

我遇到了依赖注入周期问题。我请求重新设计建议。提前谢谢。

错误描述:应用程序上下文中某些bean的依赖关系形成一个循环:

这是两个班

第一类:

@Service
public class MyService {

  private final Product1 finalProduct1;
  private final Product2 finalProduct2;

  @Autowired
  public MyService (Product1 product1, Product2 product2) {
     this.finalProduct1= product1;
     this.finalProduct2= product2;
  }

  public List<String> getMyValues(String someParameter) {
     ...
     return myValues;
  }
  ...
}

第二类:

@Service
public class Product1 {

  @Autowired
  private MyService myService;

  public List<someType> someMethod(String someParameter){
      List<String> myValues = myService.getMyValues(someParameter);
      ...
  }
  ...
} 

共有2个答案

毛景曜
2023-03-14

它看起来像是你用@Service注释了一个似乎是POJO或业务对象的东西,而这个东西肯定不是服务。

席俊驰
2023-03-14

这是一个依赖循环,因为你已经回答了你的问题。

这里有什么问题?

>

  • Spring试图从MyService创建一个bean。因此,它必须调用构造函数MyService(Product1-Product1,Product2-Product2)

    Spring需要依赖Product1,并在应用程序上下文中进行搜索。它找到用@Service注释注释的类Product1,并尝试从中创建bean(调用默认构造函数)。然后它尝试注入属性。因此它需要MyService...等等。循环依赖。转到1。然后重新开始。

  •  类似资料:
    • 在React中,想做依赖注入(Dependency Injection)其实相当简单。请看下面这个例子: // Title.jsx export default function Title(props) { return <h1>{ props.title }</h1>; } // Header.jsx import Title from './Title.jsx'; export defa

    • 依赖注入 Dependency Injection is a strong mechanism, which helps us easily manage dependencies of our classes. It is very popular pattern in strongly typed languages like C# and Java. 依赖注入是一个很强大的机制,该机制可以帮

    • 简介 Hyperf 默认采用 hyperf/di 作为框架的依赖注入管理容器,尽管从设计上我们允许您更换其它的依赖注入管理容器,但我们强烈不建议您更换该组件。 hyperf/di 是一个强大的用于管理类的依赖关系并完成自动注入的组件,与传统依赖注入容器的区别在于更符合长生命周期的应用使用、提供了 注解及注解注入 的支持、提供了无比强大的 AOP 面向切面编程 能力,这些能力及易用性作为 Hyper

    • 出自维基百科 Wikipedia: 依赖注入是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式。 这句解释让依赖注入的概念听起来比它实际要复杂很多。依赖注入通过构造注入,函数调用或者属性的设置来提供组件的依赖关系。就是这么简单。

    • 问题内容: 我想将依赖项注入。但是,我的方法不起作用。我可以看到Spring正在调用我的setter方法,但是稍后在调用when时,该属性为。 这是我的设置: ServletContextListener: web.xml :(这是文件中的最后一个侦听器) applicationContext.xml: 输出: 实现此目的的正确方法是什么? 问题答案: 我通过删除侦听器bean并为我的属性创建了一

    • 我想向Springbean注入一个单例对象依赖关系。问题是我无法访问和修改要注入其对象的类。让我描述一下这个例子。 所以我有我的接口,以及这个接口的实现,如下所示。 然后在我的配置类中,我正在创建一个bean,但是我需要在构造函数中向它传递对象,问题是我不能使成为bean,因为它来自外部包,我不能修改它。 所以我想做的是,能够将/autowire参数传递给bean。目前IntelliJ给我一个错误