我们使用 Guice 进行依赖注入。我有一个父类,我需要一个依赖项,并且该父类调用其他类方法,其中每个子类方法都需要相同的依赖项。我的想法是,我应该仅在父类注入该依赖项时使用 @Inject 注释,一旦获得该依赖项,我们就应该将其作为参数传递给其他子类方法。这是正确的做法吗?我认为我们不需要遵循在子类上单独调用@Inject的方法来避免参数传递。在我看来,只有当我们将依赖关系传递到状态的几层并且某些中间层不需要该依赖关系时,这种方法才有意义。如果我错了请纠正我。
用于说明的示例代码==
public class SDBResource {
private final AbstractAuthenticationDetailsProvider authDetailsProvider;
private final SDBService service;
@Inject
//pass detailsProvider parameter directly to doSomething method instead of doing another
// @Inject in SDBService
public SDBResource(AbstractAuthenticationDetailsProvider detailsProvider, SDBService service) {
this.authDetailsProvider = detailsProvider;
service.doSomeThing(detailsProvider);
}
}
//No need to inject detailsProvider here
public class SDBService {
public void doSomeThing(AbstractAuthenticationDetailsProvider detailsProvider) {
// do something
}
}
是的,您应该只在必要的最高级别注入一次依赖项。一旦获得依赖关系,您就可以将它们传递给其他方法和类。不需要再次注入依赖,因为它已经被注入了。