Study
ASP.NET Core

Dependency Injection Bawaan

Penjelasan

ASP.NET Core punya container Dependency Injection BAWAAN sejak awal (tidak perlu library tambahan) — Service didaftarkan di Program.cs lewat builder.Services.AddScoped<T>()/AddSingleton<T>()/AddTransient<T>(), lalu di-inject ke Controller/Service lain lewat constructor, mirip Symfony/NestJS.

Contoh Konsep

public class HargaService
{
    public decimal HitungDenganPajak(decimal harga) => harga * 1.11m;
}

// Program.cs
// builder.Services.AddScoped<HargaService>();

[ApiController]
[Route("api/[controller]")]
public class ProdukController : ControllerBase
{
    private readonly HargaService _hargaService;

    public ProdukController(HargaService hargaService)
    {
        _hargaService = hargaService;
    }

    [HttpGet("harga")]
    public IActionResult Harga()
    {
        return Ok(_hargaService.HitungDenganPajak(100000));
    }
}

Praktikum

Buat class DiskonService dengan method Hitung(decimal harga, decimal persenDiskon) yang mengembalikan harga setelah dikurangi diskon. Buat ArtikelController yang meng-inject DiskonService lewat constructor dan memakainya di satu endpoint.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

AddScoped (satu instance per request HTTP), AddSingleton (satu instance untuk SELURUH aplikasi), dan AddTransient (instance BARU tiap kali di-inject) adalah tiga lifetime berbeda yang WAJIB dipilih sesuai kebutuhan — memakai AddSingleton untuk Service yang menyimpan data spesifik-user bisa menyebabkan data bocor antar user berbeda.