Sobes.tech
Junior — Middle

Dagger kutubxonasida bog'liqliklarni injektsiya qilish uchun qanday qilib anotatsiyalar ishlatiladi?

sobes.tech AI

AIdan javob

Dagger kutubxonasi Android uchun bog'liqliklarni in'ektsiya qilishda, obyektlarni qanday yaratish va taqdim etishni tavsiflovchi anotatsiyalarni ishlatadi.

Asosiy anotatsiyalar:

  • @Inject — Dagger in'ektsiya qilishi kerak bo'lgan konstruktor, maydon yoki metodni belgilaydi.
  • @Module@Provides anotatsiyasi bilan metodlarni o'z ichiga olgan sinf, bu qanday qilib muayyan bog'liqliklarni yaratishni tavsiflaydi.
  • @Provides — Moduldagi metodni anotatsiya qiladi, bu metod bog'liqlik obyektini qaytaradi.
  • @Component — Modullar va in'ektsiya joylarini bog'laydigan interfeys, bog'liqlik grafigini yaratish uchun kodni generatsiya qiladi.

Foydalanish misoli:

@Module
class NetworkModule {
    @Provides
    OkHttpClient provideOkHttpClient() {
        return new OkHttpClient.Builder().build();
    }
}

@Component(modules = {NetworkModule.class})
interface AppComponent {
    void inject(MainActivity activity);
}

public class MainActivity extends AppCompatActivity {
    @Inject
    OkHttpClient client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DaggerAppComponent.create().inject(this);
        // Endi client Dagger tomonidan boshlang'ich holatda
    }
}

Shu tarzda, anotatsiyalar Daggerga bog'liqliklarni avtomatik ravishda yaratish va uzatishni ta'minlash imkonini beradi, bu esa boshqaruvni soddalashtiradi.