1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IntelliJ+KotlinでDagger2を使う

Last updated at Posted at 2020-05-09

Androidプロジェクトではなく、IntellijでDagger2を試したいと思い、調べつつ試してみた。

Intellijのkotlinプロジェクトを作成する。

build.gradleの初期状態はこうなってる。

build.gradle
plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.70'
}

group 'org.ikemura23'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

Dagger2 導入する

dagger2をbuild.gradleに追加する。

また、kaptを有効にする記述も追加している。

build.gradle
plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.70'
}

group 'org.ikemura23'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

apply plugin: 'kotlin-kapt' // kaptを有効にする記述を追加

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    // Dagger2 追加
    implementation "com.google.dagger:dagger:2.27"
    kapt "com.google.dagger:dagger-compiler:2.27"
}
// kaptを有効にする記述を追加
kapt {
    generateStubs = true
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

IntelliJの設定を変更する

IntelliJ > Preferences を開いて、

Preferences | Build, Execution, Deployment | Build Tools | Gradle

IntelliJ IDEA から Gradle(Default)に変更する。

スクリーンショット 2020-05-09 10.23.25.png

これで設定は完了。

Daggerの動作確認

Component

DaggerAppComponentを作成するためのComponentを作る。

@Component(modules = [AppModule::class])
interface AppComponent {
    // Component.Factoryパターン
    @Component.Factory
    interface Factory {
        fun create(): AppComponent
    }

    fun hoge(): Hoge
    fun fugaProvider(): Provider<Fuga>
}

Module

@Module
class AppModule {
    @Provides
    fun provideHoge(): Hoge {
        return Hoge()
    }

    @Provides
    fun provideFuga(hoge: Hoge): Fuga {
        return Fuga(hoge)
    }
}

これでビルドするとDaggerAppComponentが作成されて使用できればOK

main.kt
fun main(args: Array<String>) {
    // hogeの取得
    val hoge = DaggerAppComponent.factory().create().hoge()

    // fugaの取得
    val fuga = DaggerAppComponent.factory().create().fugaProvider().get()
}

使用コード

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?