İçeriğe geç

Java ve Spring'de Tasarım Desenleri: Dependency Injection ve IoC

20.08.2024 3 okunma

Dependency Injection Nedir?

Bir sınıfın bağımlılıklarını kendi oluşturmak yerine dışarıdan almasıdır. Test edilebilirliği artırır, bağımlılıkları azaltır.

Spring'de @Autowired

@Service
public class SiparisServisi {

    private final UrunRepository urunRepo;
    private final EmailServisi emailServisi;

    // Constructor injection (önerilen)
    public SiparisServisi(UrunRepository urunRepo, EmailServisi emailServisi) {
        this.urunRepo     = urunRepo;
        this.emailServisi = emailServisi;
    }

    public Siparis olustur(SiparisDTO dto) {
        Urun urun = urunRepo.findById(dto.getUrunId()).orElseThrow();
        // iş mantığı...
        emailServisi.bildirimGonder(dto.getEmail());
        return kaydet(dto, urun);
    }
}

Bean Scope'ları

  • Singleton: Varsayılan — tek instance
  • Prototype: Her inject'te yeni instance
  • Request/Session: Web uygulamalarında

@Component, @Service, @Repository

Spring bu anotasyonlarla sınıfları otomatik olarak Bean container'a ekler.

java dependency injection spring ioc spring autowired java spring bean spring design pattern
İLERİ DÜZEY JAVA PROGRAMLAMA hakkında bilgi almak ister misiniz?

Birebir özel yüz yüze eğitim yada uzaktan eğitim, esnek ders saatleri ile Pendik Kurtköy'de.