Java 具有多个服务的Dagger组件

Java 具有多个服务的Dagger组件,java,spring,spring-boot,dependency-injection,dagger-2,Java,Spring,Spring Boot,Dependency Injection,Dagger 2,我需要使用Dagger实现Spring中的服务,但我无法这样做。考虑下面的例子。 这是其中一项服务 public class Service1 { private final Repository1 repo1; @Inject public Service1(Repository1 repo1) { this.repo1 = repo1; } // implementation } 此服务的模块如下所示: @Module public

我需要使用Dagger实现Spring中的服务,但我无法这样做。考虑下面的例子。 这是其中一项服务

public class Service1 {
    private final Repository1 repo1;

    @Inject
    public Service1(Repository1 repo1) {
        this.repo1 = repo1;
    }
    // implementation
}
此服务的模块如下所示:

@Module
public class Service1Module {

   @Provides
   Repository1 provideRepository1(){
       return Repository1Impl.getInstance();
   }

   @Provides
   Service1 provideService1(){
      return new Service1Impl(this.provideRepository1());
   }
}
可以很容易地为该模块创建一个组件并使用它。简单易用

现在考虑另一个类

public class Service2 {
    private final Repository2 repo2;
    private final Service1 service1;

    @Inject
    public Service2(Repository2 repo2, Service1 service1) {
       this.repo2 = repo2;
       this.service1 = service1;
    }
    // implementation
}
我们把原来的类改为

public class Service1 {
    private final Repository1 repo1;
    private final Service2 service2;

    @Inject
    public Service1(Repository1 repo1, Service2 service2) {
       this.repo1 = repo1;
       this.service2 = service2;
    }
    // implementation
}
现在的问题是,我无法用这种方法创建适当的模块

再次考虑模块类

@Module
public class Service1Module {

     @Provides
     Repository1 provideRepository1(){
         return Repository1Impl.getInstance();
     }

     @Provides
     Repository2 provideRepository2(){
         return Repository2Impl.getInstance();
     }

    @Provides
    Service1 provideService1(){
        return new Service1Impl(
              this.provideRepository1(), 
              new Service2Impl(this.provideRepository2(), //this param 
              // needs service 1 which again needs service 2 and would 
              // be a loop);
    }
}
只有两个服务在创建模块时在其内部形成循环。考虑具有相同服务的多个服务的系统。我不知道该怎么办。在Spring中,它很容易实现,但由于某些限制,我无法使用它。请帮忙


提前感谢。

这是一个设计问题(代码气味),具有循环依赖关系(循环依赖关系)@Nkosi在春季可以自动连接任何需要的服务。与service1和service2一样,service1和service2可以相互自动连接并调用方法。如何使用匕首实现这一点?