groovy / gradle无法获得简单的Dagger2 IoC,我在这里缺少什么

时间:2018-09-03 12:03:07

标签: gradle groovy dagger-2

我在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实例将获得空注入值

我在这里做什么错-

0 个答案:

没有答案