Bu küçük proje, Java ve Spring Framework kullanarak IoC (Inversion of Control) ve Dependency Injection (DI) kavramlarını göstermektedir.
İçerik ve amaç:
- Basit bir servis katmanı (
ICustomerService/CustomerManager) ile bir veri erişim katmanını (ICustomerDal,MsSqlCustomerDal,MySqlCustomerDal) ayrı tutar. - Java tabanlı Spring konfigürasyonu örneği (
IocConfig) ve XML tabanlıapplicationContext.xmlreferansı içerir. - Uygulama, Spring'in
AnnotationConfigApplicationContextkullanılarak çalıştırılır.
Dosya yapısı (önemli dosyalar):
src/main/java/org/example/ICustomerDal.java- Veri erişim arayüzü (DAL).src/main/java/org/example/ICustomerService.java- Servis arayüzü.src/main/java/org/example/CustomerManager.java- Servis katmanı, iş kurallarını uygular ve DAL'a delegasyon yapar.src/main/java/org/example/MsSqlCustomerDal.java- MsSQL için örnek DAL uygulaması.src/main/java/org/example/MySqlCustomerDal.java- MySQL için örnek DAL uygulaması.src/main/java/org/example/IocConfig.java- Java tabanlı Spring konfigürasyonu (bean tanımları, property kaynağı).src/main/java/org/example/Main.java- Uygulamayı çalıştıran küçük runner.src/main/resources/applicationContext.xml- (Referans) XML tabanlı component-scan örneği.src/main/resources/values.properties- Uygulama özellikleri (ör.database.connectionString).pom.xml- Maven yapılandırması (sadecespring-contextbağımlılığı içerir).
Nasıl çalıştırılır (Windows PowerShell):
- Projeyi derleyin:
mvn -DskipTests package- Çalıştırma (derleme sonrası JAR veya IDE kullanabilirsiniz).
- IDE içinde
Mainsınıfını çalıştırabilirsiniz. - Komut satırından doğrudan çalıştırma için projenin package edilip çalıştırılabilir JAR üretilmesi ve
mainClasstanımlanması gerekir (şu anpom.xmlsadece derleme için).
- IDE içinde
Örnek çıktı (IDE'de Main çalıştırıldığında):
Connection String : baglanti metni
MsSQL veri tabanına eklendi.
Notlar ve kullanım ipuçları:
IocConfigiçinde hangiICustomerDaluygulamasının döndürüleceğini değiştirmek, veri kaynağını değiştirmek için yeterlidir (şu anMsSqlCustomerDaldönüyor).- Alternatif yaklaşım: DAL sınıflarını
@Componentile işaretleyip@Profileveya@Primarykullanarak hangi implementasyonun seçileceğini yapılandırabilirsiniz. MsSqlCustomerDalveMySqlCustomerDaliçinde@Value("${database.connectionString}")ile properties dosyasından bağlantı dizesi okunması için altyapı bulunur; bu değerisrc/main/resources/values.propertiesüzerinden değiştirebilirsiniz.
Önerilen bir sonraki adım (hızlı doğrulama):
mvn -DskipTests packageçalıştırılarak derleme doğrulanmalı. Eğer derleme hatası yoksa IDE'deMainçalıştırılarak çıktının beklendiği gibi olup olmadığı kontrol edilebilir.
Eğer isterseniz ben:
pom.xml'emaven-shade-pluginveyamaven-assembly-pluginekleyip çalıştırılabilir JAR oluşturma adımını ekleyebilirim.MsSqlCustomerDalyerineMySqlCustomerDalkullanacak şekildeIocConfig'i hızlıca güncelleyebilirim.