2016-11-22 20 views
5

, iki seçeneğim var Dosyalanmış enjeksiyondan daha mı?Yapıcı enjeksiyon herhangi bir hizmet enjekte ederken

+0

Bu hatanın sonar açıklaması nedir? – Chris311

+2

İlgili kural açıklamasına bakın ([bu] (https://sonarqube.com/coding_rules#rule_key=squid%3AS3306)). Daha sonra bir şey belirsiz kalırsa, sorunuzu o gerçek açıklamayla ilgili sorgularla güncellemenizi öneririm. –

+0

@Nicolas – Riadh

cevap

1

Do alan yoluyla yerine enjeksiyon yapıcısı aracılığıyla enjeksiyonu kullanmak niçin bazı geçerli argümanlar vardır bu ilgili question At

public class ClassWhereIWantToInject{ 

    private MyService myService; 

    @Inject 
    public ClassWhereIWantToInject(MyService mySerivce){ 
     this.myService = myService; 
    } 
} 

(Sana yay çizme veya CDI karşılaştırılabilir bir şey kullandığınız varsayılmaktadır) gibi bir şey . CDI dışı ortamlarda, ayrıca daha karmaşık bir mantık eklemeye gerek kalmadan, Birim Testi ile de kurucu aracılığıyla başlatmayı kullanmanız avantajına dayanır. aksi halde, bu çerçeve (yay/EJB/CDI) ile enjekte edilecek enjekte içeren sınıf (sınıf kullanarak arayanın tarafından örneği edilecektir

+1

EJB-CDI kullanıyorum. Soru şu: Enjeksiyon için neden en iyisi: Saha mı Yapıcı mı? Cevap [burada] (https://sonarqube.com/coding_rules#rule_key=squid%3AS3306) – Riadh

+1

Haha, harika yazmadan önce sorunuzun yorumlarına bakmalıydım. Uyarıdan kaçınmak istediğini düşündüm, bu yüzden kod parçasını ekledim. – hecko84

0

cevap here

Alan enjeksiyon doğru olarak yapılır olduğu yeni operatör) gerçekten gerçekleşmesini bekleyen bir NullPointerException var. Bu durumda, kurucu enjeksiyonu kullanmak daha iyidir.

Enjeksiyon, çerçeve tarafından enjekte edilen bir sınıfta yapılacaksa, güvenilir bir alan enjeksiyonu gerçekleştirebiliriz.

İlgili konular