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