使用Dagger快速入门

本文详细介绍了Dagger2在Android应用中的依赖注入、组件、模块、作用域的使用,包括简单依赖注入、通过模块提供对象、单例模式、自定义作用域以及组件的全局绑定,帮助开发者理解和实现代理式依赖注入框架。

1.导入依赖

   //dagger核心库
    implementation("com.google.dagger:dagger:2.30.1")
    //核心 适配器 编译器
    annotationProcessor("com.google.dagger:dagger-compiler:2.30.1")

2.简单依赖注入

package com.dagger.di;

import javax.inject.Inject;

public class User {

    //1.使用@Inject注解在构造方法上:就算告知Dagger可以通过构造方法来创建并获取到User实例
    @Inject
    public User() {
    }
}
package com.dagger.di;

import com.dagger.MainActivity;

import dagger.Component;

//相当于IOC容器 有一些对象的实例
@Component
public interface ApplicationComponent {


    //2.将对象注入到MainActivity这个类里
    void inject(MainActivity mainActivity);



}
package com.dagger;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.dagger.di.ApplicationComponent;
import com.dagger.di.DaggerApplicationComponent;
import com.dagger.di.User;

import javax.inject.Inject;

public class MainActivity extends AppCompatActivity {

    //3.加入对象
    @Inject
    User user;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //4.执行注入动作
        ApplicationComponent applicationComponent = DaggerApplicationComponent.create();
        applicationComponent.inject(this);


        System.out.println("user:"+user);


    }
}

3.第二种依赖注入

package com.dagger.di;

import javax.inject.Inject;

import dagger.Module;
import dagger.Provides;
import retrofit2.Retrofit;

//表明这个类是一个dagger模块
@Module
public class NetModule {


    //相当于Springboot @Bean  第二种方式告知Dagger 可以调用该方法来获取到要注入对象的实力
    @Provides
    public Retrofit provideRetrofit(){

        return new Retrofit.Builder()
                .baseUrl("https://www.baidu.com")
                .build
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值