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.
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.