2016-12-12 64 views
8

@Autowired açıklama olmadan yapıcı içinde bağımlılıkları enjekte:
https://github.com/spring-guides/gs-async-method/tree/master/completeBahar Bunun resmi Bahar <a href="https://spring.io/guides/gs/async-method/" rel="nofollow noreferrer">tutorials</a> örneklerle deniyorum ve bu kodun bir bağımlılık yoktur

Eğer AppRunner.java üzerinde koduna baktığımızda sınıf, ben 2 sorunları var: sunucu başlayacağı zaman bu sınıfın yapıcı bir aralık bırakalım eğer

1), yapıcısındaki gibi görünüyor GitHubLookupServicekullanarak, yay tarafından sağlanmaktadır @ Yapılandırılmış hizmet fasulye. AMA, yapıcıda @Autowired notasyonu yoktu, bu yüzden bu kurucu doğru bağımlılıkla dünyaya nasıl giriyor? null olması gerekiyordu.

Spring Boot otomatik bir varsayım mı?
mu Baharı "bakın özel alan + yapıcı argüman ve buna uygun bir fasulye için görünmelidir varsayar?
o?
ben eksik bir şey Bahar Çerçeve veya Bahar çizme var mı?

2) Hatırlıyorum, varsayılan kurucu sağlamak için sağduyulu fasulye/hizmet vb. Bu sınıf nasıl (AppRunner) varsayılan kurucu yok? İlke, yapıcıyı argüman ile çalıştırması gerektiğini nasıl biliyor? Tek kurucu olduğu için mi?

cevap

29

Spring fasulyesi olarak yapılandırılmış bir sınıfı, sadece tek bir kurucu varsa, Autowired açıklama göz ardı edilebilir ve Yay bu kurucu ve gerekli tüm bağımlılıkları enjekte edecek Spring 4.3 başlayarak. varsayılan kurucu İlişkin

: Ya varsayılan kurucu olan veya Autowired ek açıklama olmadan sınıfında Eğer birden fazla kurucuya sahip Autowired ek açıklama veya tek kurucu ile yapıcı gerekir.

Daha fazla bilgi için resmi Spring belgelerinden "@Autowired" bölümünü okuyun.

+1

Dokümantasyonla ilgili daha alakalı bir bağlantı https://docs.spring.io/spring/docs/4.3.x/spring-framework-reference/htmlsingle/#beans-autowired-annotation – gkc