Dagger2 初入门

本文详细介绍Dagger依赖注入的基本用法与高级技巧,包括组件创建、模块定义、依赖提供等核心概念,并演示如何实现单例模式。
1,
  implementation 'com.google.dagger:dagger:2.9'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.9'

一般用法:

初始化的2种方式: 第二种方式适应于传参

 DaggerUserComponet.create().inject(this);

 DaggerUserComponet.builder()
                .userModule(new UserModule())
                .build()
                .inject(this);

2,module:

@Module
public class UserModule {

    @Provides
    public UserManger provideUserManager(){
        return new UserManger();
    }
}

3,component

@Component(modules = {UserModule.class})
public interface UserComponet {

    void inject(MainActivity activity);
}

4,实例

public class UserManger {

    public UserManger( ){

    }

    public void  register(){
        System.out.println("-----------usermanager register"+this);
    }
}

5,mainActivity 

public class MainActivity extends AppCompatActivity {
    @Inject
    UserManger mUserManger;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DaggerUserComponet.create().inject(this);

        mUserManger.register();
    }
}

高级用法:Singleton

1, module

@Module
public class UserModule {

    @Singleton
    @Provides
    public UserManger provideUserManager(){
        return new UserManger();
    }

}

2, Componet

@Singleton
@Component(modules = {UserModule.class})
public interface UserComponet {

    void inject(MainActivity activity);
}

3,activity

public class MainActivity extends AppCompatActivity {
    @Inject
    UserManger mUserManger1;

    @Inject
    UserManger mUserManger2;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DaggerUserComponet.create().inject(this);

        mUserManger1.register();  //  打印出来的地址是:UserManger@920c66b  Singleton  后 UserManger@920c66b
        mUserManger2.register();  //  打印出来的地址是:UserManger@12b45c8  Singleton  后 UserManger@920c66b
    }
}

高级用法:name











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值