Spring yapılandırma dosyasını nereye koyabilirim?


18

Spring framework'ü projeme özellikle sunucu tarafına entegre etmek istiyorum.

Bu yüzden, savaş dosyasının WEB-INF klasörüne koymak istemiyorum.

Her katmana bir applicationContext.xml koymalıyım (ayrı projelere ayrıldığından beri her proje anlamına mı geliyor?) (Hizmetler, Etki Alanı ve DAO)

İyi uygulama nedir?


Yanıtlar:


25

Maven dosya yapısı bu konuda yardımcı olabilir

Özünde, Spring konfigürasyon dosyaları (sadece jenerik değil, bu arada herhangi bir isme sahip olabilir applicationContext.xml) sınıf yolu kaynakları olarak ele alınır ve altında dosyalanır src/main/resources. Oluşturma işlemi sırasında, bunlar daha sonra WEB-INF/classesbu dosyaların bitmesi için normal bir yer olan dizine kopyalanır .

Varyasyonlar , Spring bağlamlarını uygulama çerçevelerine ayrılmış diğer kaynaklardan ayırmak için ek bir springdizin (örn. src/main/resources/spring) İçerir. Uygulama bağlamlarını aşağıdaki gibi özel katmanlara ayırmak isteyebilirsiniz:

example-servlet.xml
example-data.xml
example-security.xml

ve bunun gibi.

Geliştirme / test / üretim gibi farklı ortamlar ne olacak?

Genelde, Spring yapılandırmanız ortam yapılandırmasını ahem ortamından almalıdır. Genellikle bu, gerekli yapılandırmayı sağlamak için JNDI, JDBC, ortam değişkenleri veya harici özellikler dosyalarının kullanılması anlamına gelir. Bunları tercih sırasına göre listeliyorum, çünkü JNDI'nin yönetilmesi genellikle kontrollü bir üretim kümesindeki dış özellik dosyalarından daha kolaydır.

Entegrasyon testi durumunda, "salt test" Yay yapılandırma dosyası kullanmanız gerekebilir. Bu, test fasulye veya konfigürasyonu kullanan özel bağlamlar içerecektir. Bunlar src / test / resources altında bulunur ve test-geliştiricilerin amaçlarının farkında olduklarından emin olmak için bir ön eki olabilir . Tipik bir kullanım, derlemenin otomatikleştirilmiş testleri sırasında bir HSQLDB veritabanını hedefleyen JNDI olmayan bir Veri Kaynağı sağlamak ve test durumunda referans gösterilecektir.

Bununla birlikte, genel olarak Spring bağlam dosyalarınızın çoğunun katmanlar arasında hareket ettikçe özel değişiklik yapması gerekmez. Dev / test / üretimde sadece farklı kimlik bilgileriyle aynı derleme yapısının (örn. WAR dosyası) kullanılması gerekir.


2

Projeniz Maven modüllerine ayrıldı mı? Öyleyse, yalnızca yapılandırma dosyaları için fazladan bir modül ekleyebilirsiniz. Arama sağlar konfigürasyon dosyasında-modül

config-module
      |
      |--> src\main\resources\config\spring\applicationContex.xml
      |--> src\main\resources\config\properties\application.properties
      |--> pom.xml

Bu tür bir yapılandırma bir öneridir. Kendi dosya setinizi kurun JAR gibi paketleyin ve bu modülü başka bir modüle (web, kulak lib, başka bir kavanoz) bağımlı olarak ekleyin.

Sınıf yolunda oldukları için yapılandırma modülü kaynaklarına (xml, özellikler vb.) Erişebilirsiniz.

web modülünün pom'ı

<dependency>
    <groupId>com.myproject.group</groupId>
    <artifactId>config-module</artifactId>
</dependency>

Daha sonra harici Spring bağlam dosyalarından içe aktarma ifadeleri kullanın . Örneğin

<import resource="classpath*:com/package/subpackage/**/config/applicationContext.xml" />

Bu harika bir fikirdi! Ben örnek "ithalat kaynak" benim için işe yaramadı çünkü biraz fazladan ekleme özgürlüğü aldı ...... Hala (tam paket adına dayalı) ithalat beyanı "filtreleme" öğreniyorum ... ve ben bu geleceğin okurları için bu harika fikir ve cevabın dikkatini dağıtmak için çalışmadım. Teşekkürler Laiv!
granadaCoder

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.