我在intellij中创建了一个新的gradle项目,并添加了dagger2依赖项和类似这样的插件
build.gradle 插件{ id'groovy' id'java' id“ net.ltgt.apt”版本“ 0.18” //用于dagger2 ioc }
group 'com.softwood'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.5.2'
testCompile group: 'junit', name: 'junit', version: '4.12'
// compile time time IoC https://mvnrepository.com/artifact/com.google.dagger/dagger
compile group: 'com.google.dagger', name: 'dagger', version: '2.17'
apt 'com.google.dagger:dagger-compiler:2.17'
}
我像这样创建一个名为“ Injectable”的接口
import dagger.Component
@Singleton @Component (modules=[InjectableModule])
interface Injectable {
String toString ()
}
我创建了一个模块来创建接口类型的实例
import dagger.Module
import dagger.Provides
import javax.inject.Singleton
@Module
class InjectableModule {
@Provides @Singleton Injectable provideInjectable () {
new InjectableClass()
}
}
我定义了一个实现类,用于扩展公共接口,
class InjectableClass implements Injectable {
String toString () {
"injected implementation $this"
}
}
我定义了一个依赖类,它希望像这样通过依赖注入来实现隐含
import javax.inject.Inject
class MyInjected {
Injectable impl
//constructor injection expected
@Inject
MyInjected (Injectable inj) {
impl = inj
}
String toString () {
"MyInjected ($impl)"
}
}
最后,现在意味着我肯定有一个带有主应用程序(args)的应用程序,该应用程序无法解析DaggerApplication_injectable,如果我删除它并运行示例,则MyInjected实例将获得空注入值
我在这里做什么错-