Dagger 2 injecting parameters of constructor

后端 未结 2 1060
野性不改
野性不改 2020-12-07 16:21

I saw the following example on the Dagger 2 website:

class Thermosiphon implements Pump {
  private final Heater heater;

  @Inject
  Thermosiphon(Heater he         


        
2条回答
  •  执笔经年
    2020-12-07 17:04

    For one, since you've annotated the constructor of Thermosiphon with @Inject, you don't need an @Provides method. Dagger uses this constructor to create an instance when needed. Just annotate the Thermosiphon class itself with @Singleton to preserve the singleton behavior.

    If you do want to use an @Provides method, and to answer your question fully, you can specify the Heater as a parameter to the method:

    @Module
    public class ThermosiphonModule {
    
        @Provides
        @Singleton
        Thermosiphon provideThermosiphon(Heater heater) {
            return new Thermosiphon(heater);
        }
    
    }
    

提交回复
热议问题