Dependency Injection Spring Boot
Dependency Injection di Spring Boot dapat dilakukan dengan beberapa cara, tiga cara yang umum digunakan untuk melakukan Dependency Injection
, antara lain : field injection, setter injection dan contructor injection. Artikel kali ini hanya akan memberikan contoh-contoh singkat atau code sinppet jenis-jenis dependency injection, untuk contoh latihannya dapat dilihat di Latihan Dependency Injection
Field Injection
field injection dilakukan langsung pada field terkait yang ingin kita inject dengan menggunakan anotasi @Autowired
. Penggunaan field injection tidak direkomendasikan. Silakan gunakan contructor injection atau setter injection. filed injection menggunkan reflection untuk melakukan inject sehingga performanya menjadi lebih lambat.
@Controller
public class CodingduluajaController {
@Autowired
private HalloDuniaService halloDuniaService;
}
Setter Injection
setter injection merupakan metode inject dengan memanfaatkan setter untuk melakukan inject terhadap field yang kita inginkan. Pada setter di tambahkan anotasi @Autowired
.
@Controller
public class CodingduluajaController {
private HalloDuniaService halloDuniaService;
@Autowired
public void setHalloDuniaService(HalloDuniaService halloDuniaService) {
this.halloDuniaService = halloDuniaService;
}
}
Contructor Injection
contructor injection menggukan contructor untuk melakukan inject. dan penggunakan contructor injection ini tidak memerlukan anotasi @Autowired
.
@Controller
public class CodingduluajaController {
private HalloDuniaService halloDuniaService;
public CodingduluajaController(HalloDuniaService halloDuniaService) {
this.halloDuniaService = halloDuniaService;
}
}
Kesimpulan
Penggunaan contructor injection atau setter injection lebih disarankan dari pada menggunakan field injection pada aplikasi, namun untuk unit test dapat menggunakan field injection.