Java Dagger使用提供了vs创建自定义类
我是Dagger的新手,在一些Dagger项目中,我遇到了@Provides的替代方案,这让我思考这两种方法之间是否有实际的区别 通用代码:Java Dagger使用提供了vs创建自定义类,java,dagger-2,Java,Dagger 2,我是Dagger的新手,在一些Dagger项目中,我遇到了@Provides的替代方案,这让我思考这两种方法之间是否有实际的区别 通用代码: class DependencyOne { @Inject DependencyOne(); } class DependencyTwo { @Inject DependencyTwo(); } 方法1: class MyClass { Resource r; @Inject MyClass(DependencyOne
class DependencyOne {
@Inject DependencyOne();
}
class DependencyTwo {
@Inject DependencyTwo();
}
方法1:
class MyClass {
Resource r;
@Inject MyClass(DependencyOne d1, DependencyTwo d2) {
r = Resource.builder().addDependencies(d1,d2).build();
}
Resource getResource() {
return r;
}
}
@Component interface MyComponent {
MyClass getMyClass();
}
// Get the resource using
DaggerMyComponent.create().getMyClass().getResource();
方法2:
@Module class MyModule {
@Provides static Resource getResource(DependencyOne d1, DependencyTwo d2) {
return Resource.builder().addDependencies(d1,d2).build();
}
}
@Component(modules={MyModule.class})
interface MyComponent {
Resource getResource();
}
// Get the resource using
DaggerMyComponent.create().getResource();
现在我知道我可能想得太多了,但这两种方法,性能或其他方面,有什么实际的区别吗?其中一种方法优于另一种方法吗?
@提供了方法,构造函数注入是Dagger 2的最佳实践。直接调用组件并请求像资源那样的独立依赖项可能会被最小化
假设您有一个类,希望能够使用资源
。编写@为资源提供方法。然后您可以编写这样的类:
@Inject
class ResourceConsumer {
private final Resource resource;
@Inject
ResourceConsumer(Resource resource) {
this.resource = resource;
}
}
因为Dagger 2知道如何提供资源
,所以它将知道如何提供资源消费者
。然后您可以将资源消费者
注入到任何您想要的地方。@提供了
方法,构造函数注入是Dagger 2的最佳实践。直接调用组件并请求像资源那样的独立依赖项可能会被最小化
假设您有一个类,希望能够使用资源
。编写@为资源提供方法。然后您可以编写这样的类:
@Inject
class ResourceConsumer {
private final Resource resource;
@Inject
ResourceConsumer(Resource resource) {
this.resource = resource;
}
}
因为Dagger 2知道如何提供资源
,所以它将知道如何提供资源消费者
。然后,您可以将资源消费者
注入到任何您想要的地方