Tag: dagger

Google Auto Factory:未使用@Provided注释?

所以我正在尝试谷歌汽车工厂,但我得到一个奇怪的错误。 工厂类: @AutoFactory( className = “MembersAdapterFactoryImpl” ) public class MembersAdapter extends ArrayAdapter { /** * Get an instance of the helper */ private MembersAdapterHelper mMembersAdapterHelper; public MembersAdapter(@Provided MembersAdapterHelper membersAdapterHelper, Context context, int resource, List members){ super(context, resource, members); mMembersAdapterHelper = membersAdapterHelper; } } 生成的类: package me.magneto.groups.adapters; import javax.annotation.Generated; import javax.inject.Inject; import javax.inject.Provider; @Generated(“com.google.auto.factory.processor.AutoFactoryProcessor”) public final […]

无法找到导入javax.inject.Inject包

我正在尝试将Dagger实现为IntelliJ项目中的dependency injection器,但我的代码失败了: import javax.inject.Inject; Intellij正在寻找’ javax ‘包,但不是’ inject ‘包,所以它失败了。 我是Android的新手,所以我很抱歉,如果这是一个没脑子,但任何人都可以告诉我为什么没有找到注入包?

同一个库的多个版本

我有项目A,曾经有模块A1,使用dagger v.1.2.2。 现在我想添加项目A,模块A2,它依赖于dagger v.2.0。 但我不能因为这两个匕首库存冲突。 我可以在不同的Android模块中以某种方式处理多个版本的库吗?

摆脱Dagger 2警告“生成一个MembersInjector”

鉴于以下课程 abstract class AbstractClass { @Inject SomeDependency someDependency; } class SomeClass extends AbstractClass { @Inject AnotherDependency anotherDepenency; public void onCreate() { component = // Get component instance somehow component.inject(this); } } 在Dagger 2中,当将依赖项注入到从包含依赖项的抽象基类扩展的类中时,Dagger显示了Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead.类型的警告Generating a MembersInjector for AbstractClass. Prefer to run the […]

flink – 使用匕首注射 – 不可序列化?

我使用Flink(最新通过git)从kafka流到cassandra。 为了简化unit testing我通过Dagger添加dependency injection。 ObjectGraph似乎正在正确设置自己,但是’内部对象’被Flink标记为“不可序列化”。 如果我直接包含这些对象,它们会起作用 – 那么区别是什么? 有问题的类实现了MapFunction和@Inject一个用于cassandra的模块和一个用于读取配置文件的模块。 有没有办法建立这个,所以我可以使用后期绑定或Flink使这不可能? 编辑: fwiw – dependency injection(通过匕首)和RichMapFunction不能共存。 Dagger不允许您包含任何在其定义中扩展的对象。 进一步: 通过Dagger Lazy 实例化的对象也不会序列化。 线程“main”中的exceptionorg.apache.flink.api.common.InvalidProgramException:对象com.someapp.SaveMap@2e029d61不可序列化 … 引起:java.io.NotSerializableException:dagger.internal.LazyBinding $ 1

抽象超类中的Generic @Inject’d字段

考虑一组MVP-ish类型。 存在一个抽象的Presenter,带有View接口: public interface View { //… } public abstract class AbstractPresenter { @Inject V view; //… } 然后,让我们有一个特定的具体的presenter子类,其视图接口和实现: public interface LoginView extends View { //… } public LoginPresenter extends AbstractPresenter { //… } public class LoginViewImpl implements LoginView { //… } 在Dagger模块中,我们当然会定义一个@Provides方法: @Provides LoginView provideLoginView() { return new LoginViewImpl(); } 在Guice中你可以用同样的方式编写它,或者只是bind(LoginView.class).to(LoginViewImpl.class) 。 但是,在Dagger(来自Google的v1和2.0-SNAPSHOT)中,这会产生错误,因为在为AbstractPresenter创建绑定接线时,它无法确定V是什么。 另一方面,Guice指出,因为它实际上是在创建一个LoginPresenter […]

指定注释处理器的顺序

我正在尝试在我的Java项目上运行Dagger 2和Lombok。 当然,龙目岛必须首先运行,但实际上它是否真的有机会。 起初我怀疑我可以通过类路径中库jar的相应位置来指定顺序,但是该顺序显然会被忽略。 有没有办法指定它们以某种方式运行的顺序,或者我只是不得不忍受不能组合两个AP? 我制作了一个SSCCE测试用例 。 一个简单的git clone & mvn compile足以certificate这个问题 – 如果你在App.java中注释第18行并取消注释第20-21行,它就会编译,即使第18行中的Lombok表示法创建了一个相同的构造函数。 问题是龙目岛似乎追随Dagger。