2016-04-04 22 views
0

Bir süredir Spring MVC ile çalıştım ve düz yaylı bir uygulama oluşturmayı düşünüyorum (Spring Boot olabilir). - Person - Adres gibi birkaç etki alanı veri nesnesi olacaktır. Ancak ilk uygulama sürümü, Adres sınıfı olmadan oluşturulacaktır. Adres sınıfında hangi alanların saklanacağını bilmiyorum. Ayrıca, Hazırda Bekletme ile uygulama yapmak istiyorum (bu nedenle, Hazırda bekletme örnekleri sınıfları için DB tabloları oluşturacaktır). Bu yüzden seçeneklerim var: -Adres alanı olmaksızın, önce Kişi sınıfı oluşturun, ancak eksik olacak ve Adres sistemde olduğunda testlerin güncellenmesi gerekecektir. -Adres Arayüzünü oluşturun ve MockAddress veya StubAddress gibi bazı uygulamaları yapın ve Adres Arayüzü tipinde Kişi Sınıfı'nda bir veri alanı oluşturun. -Herhangi bir arabirim ve alan/yöntem kullanmadan adres sınıfını oluşturun ve kişiyle bağlayın.Etki alanı modelinde yay bağımlılığı enjeksiyonunu kullan?

Bu konu hakkında iyi bir açıklama bulamadım, o yüzden DI'yi nasıl kullanacağım ya da kullanmamaya değer mi? Hizmet katmanı teliyle ilgili çoğu makale veri modeli nesneleriyle ilgili değil.

+0

Sorunuzun açıklamasını basitleştirmeyi düşünün, bu nedenle yalnızca sorunuzun ayrıntılarını dahil ediyorsunuz. –

+0

Aslında, basitleştirebildiğimden emin değilim, şimdi olduğu gibi kalacak. Teşekkürler. – Pavlo

cevap

-1

Bağımlılık enjeksiyonunun gücü (DI), etki alanı modelinde değil; Örneğin, kişi-adres arası alan modeli ilişkisinde DI'den yararlanmayacaksınız. Kalıcılık veri modeliniz, yani veritabanınız + Hazırda Bekletme, etki alanı modeli ilişkilerini korumalıdır. Bununla birlikte, uygulama yapılandırmanızı yönetmek DI'yi bir üretim hazır uygulaması oluşturmak için kullanmak için mükemmel bir yerdir. Hizmet katmanlarını yapılandırma DI kullanmak için başka bir harika nokta. Bağımlılık enjeksiyonunu kullanmak, tanımladığınız şey gibi en temel Spring uygulamaları için bile, zaman ve çaba sarf etmeye değerdir.

Başlamak için here's a simple example using Spring Data JPA with Hibernate. Veritabanınızı etki alanı modeli değişiklikleri olarak yükseltmek için Flyway kullanın.

+0

Merhaba. Verdiğiniz ilk bağlantıyı kontrol ettim, ancak etki alanı veri nesnesinde herhangi bir bağımlılık enjeksiyonu görmedim. Bu örnek harika, ama sorumu cevaplamıyor. Bir şey mi özledim Flyway kesinlikle benim için kesinlikle yeni olsa da, yarın kontrol edeceğim ... – Pavlo

+0

@Pavlo - örnek, bağımlılık enjeksiyonu, çerçeve içinde büyük ölçüde gizli olsa da, uygulamada '@ Bean' hariç ... –

+0

Evet bkz., CustomerRepository komutunu CommandLineRunner nesnesine enjekte eder. Ama soruma göre bir veri nesnesinden diğerine enjekte etmeyi sordum. Örneğinizle, Müşteri, başka bir veri modeli nesnesine (Adres gibi) bağlıysa olurdu. Ve soru şudur: her zaman onları sıkıca bağlamalı mıyım (Adres ve Müşteri) ya da DI'yi burada da kullanabilir miyim? Veri nesnesini yalnızca servise enjekte ederken değil (ör. CommandLineRunner bean). – Pavlo