在什么情况下使用组件依赖项而不是子组件依赖项是有益的?为什么?
组件依赖关系--当您希望保持两个组件独立时,请使用此功能。
子组件-当你想要保持两个组件的耦合时使用它。
我将使用下面的示例来解释组件依赖关系和子组件。关于该示例,一些值得注意的地方是:
@Module
public class ModuleA {
@Provides
public SomeClassA1 provideSomeClassA1() {
return new SomeClassA1();
}
}
@Module
public class ModuleB {
@Provides
public SomeClassB1 provideSomeClassB1(SomeClassA1 someClassA1) {
return new SomeClassB1(someClassA1);
}
}
public class SomeClassA1 {
public SomeClassA1() {}
}
public class SomeClassB1 {
private SomeClassA1 someClassA1;
public SomeClassB1(SomeClassA1 someClassA1) {
this.someClassA1 = someClassA1;
}
}
在下面的组件依赖关系示例中注意以下几点:
componentB
必须通过@component
注释上的dependencies
方法定义依赖项。componentA
不需要声明moduleB
。这使两个组件保持独立。public class ComponentDependency {
@Component(modules = ModuleA.class)
public interface ComponentA {
SomeClassA1 someClassA1();
}
@Component(modules = ModuleB.class, dependencies = ComponentA.class)
public interface ComponentB {
SomeClassB1 someClassB1();
}
public static void main(String[] args) {
ModuleA moduleA = new ModuleA();
ComponentA componentA = DaggerComponentDependency_ComponentA.builder()
.moduleA(moduleA)
.build();
ModuleB moduleB = new ModuleB();
ComponentB componentB = DaggerComponentDependency_ComponentB.builder()
.moduleB(moduleB)
.componentA(componentA)
.build();
}
}
注意子组件示例中的以下几点:
public class SubComponent {
@Component(modules = ModuleA.class)
public interface ComponentA {
ComponentB componentB(ModuleB moduleB);
}
@Subcomponent(modules = ModuleB.class)
public interface ComponentB {
SomeClassB1 someClassB1();
}
public static void main(String[] args) {
ModuleA moduleA = new ModuleA();
ComponentA componentA = DaggerSubComponent_ComponentA.builder()
.moduleA(moduleA)
.build();
ModuleB moduleB = new ModuleB();
ComponentB componentB = componentA.componentB(moduleB);
}
}
问题内容: 这是我目前拥有的并且可以正常工作: 现在,我想添加另一个依赖项。我将其更改为: 但是现在我收到此错误消息: FragmentFacebookLoginComponent依赖于多个作用域组件 我该如何解决?我如何有多个依赖关系? 如果我从一个组件中删除范围,则会收到此错误消息: AnotherComponent(无作用域)不能依赖范围内的组件 问题答案: 最后,我创建了一个具有正确范围的
我的应用程序中有以下Dagger2架构: 其中:AppComponent: UserComponent: ActivityComponent: ChatComponent: 首先,如何将不同的注入到类中?要么是应用程序,要么是活动?? 其次,我在编译代码时遇到了一个奇怪的问题,错误是: 错误:(23,10)错误:br.com.animaeducacao.ulife.domain.interacto
与Build Type类似,Product Flavor也会通过它们自己的sourceSet提供代码和资源。 上面的例子将会创建4个sourceSet: android.sourceSets.flavor1 位于src/flavor1/ android.sourceSets.flavor2 位于src/flavor2/ android.sourceSets.androidTestFlavor1 位
Apache ShardingSphere 在数据库治理模块使用 SPI 方式载入数据到配置中心和注册中心,进行实例熔断和数据库禁用。 目前,Apache ShardingSphere 内部支持 ZooKeeper,Etcd等常用的配置中心/注册中心。 此外,开发者可以使用其他第三方组件,并通过 SPI 的方式注入到 Apache ShardingSphere,从而使用该配置中心和注册中心,实现数
SOFARPC 使用了一些三方开源组件,他们分别是: 一些主要依赖: Netty under Apache License 2.0 SLF4j under the MIT License SOFA Bolt under Apache License 2.0 Javassist under Apache License 2.0 Resteasy under Apache License 2.0 SO
# 服务和组件 组件(components), 服务(services) 和依赖(dependencies): 和其他技术一样, Windsor 有一些基础概念你需要理解以便正确的使用它。不要害怕 - 他们可能有吓人复杂的名称和抽象的定义,但是掌握他们十分简单。 服务 :information_source: Windsor中的服务 和 WCF 服务: 术语服务(service)的使用十分泛滥,