Proje Yapısı ve Konfigürasyon
Bu bölümde, Spring Boot ile e-ticaret uygulamasının backend kısmının proje yapısını ve konfigürasyonunu detaylı olarak ele alacağız. Doğru bir proje yapısı ve konfigürasyon, uygulamanın bakımını kolaylaştırır ve geliştirme sürecini daha verimli hale getirir.Spring Boot Proje Yapısı
Spring Boot projesi, belirli bir dizin yapısına sahiptir. Bu yapı, uygulamanın farklı bileşenlerini organize etmeye yardımcı olur. Aşağıda, e-ticaret uygulaması için önerilen proje yapısı bulunmaktadır:- src/main/java: Java kaynak kodlarını içerir.
- com.example.ecommerce: Ana paket.
- EcommerceApplication.java: Uygulamanın başlangıç noktası.
- config/: Uygulama konfigürasyon sınıflarını içerir.
- controller/: REST API endpoint’lerini içeren controller sınıflarını içerir.
- dto/: Data Transfer Object (DTO) sınıflarını içerir.
- exception/: Özel istisna sınıflarını ve global istisna işleyicilerini içerir.
- model/: Entity sınıflarını içerir.
- repository/: Veritabanı işlemlerini gerçekleştiren repository sınıflarını içerir.
- security/: Güvenlik konfigürasyonunu ve ilgili sınıfları içerir.
- service/: İş mantığını içeren service sınıflarını içerir.
- util/: Yardımcı sınıfları ve metodları içerir.
- com.example.ecommerce: Ana paket.
- src/main/resources: Uygulama kaynaklarını içerir.
- application.properties: Uygulama konfigürasyon dosyası.
- application-dev.properties: Geliştirme ortamı için konfigürasyon dosyası.
- application-prod.properties: Üretim ortamı için konfigürasyon dosyası.
- static/: Statik dosyaları (CSS, JavaScript, resimler) içerir.
- templates/: HTML şablonlarını içerir (Thymeleaf vb. kullanılıyorsa).
- src/test/java: Test sınıflarını içerir.
- pom.xml: Maven proje konfigürasyon dosyası.
- README.md: Proje hakkında bilgi içeren dosya.
Maven Konfigürasyonu (pom.xml)
Maven, Java projeleri için bağımlılık yönetimi ve derleme süreçlerini otomatikleştiren bir araçtır. Spring Boot projeleri genellikle Maven ile yapılandırılır. Aşağıda, e-ticaret uygulaması için örnek birpom.xml dosyası bulunmaktadır:
pom.xml dosyası, e-ticaret uygulaması için gerekli tüm bağımlılıkları içerir:
- Spring Boot Starter Dependencies: Spring Boot’un temel bileşenlerini içerir.
- spring-boot-starter-data-jpa: JPA ile veritabanı işlemleri için.
- spring-boot-starter-web: Web uygulamaları geliştirmek için.
- spring-boot-starter-security: Güvenlik özellikleri için.
- spring-boot-starter-validation: Veri doğrulama için.
- Database Dependencies: Veritabanı bağlantısı için gerekli bağımlılıklar.
- mysql-connector-java: MySQL veritabanı bağlantısı için.
- JWT Dependencies: JSON Web Token (JWT) desteği için.
- jjwt: JWT oluşturma ve doğrulama için.
- Lombok: Tekrarlayan kod yazımını azaltan bir kütüphane.
- Development Tools: Geliştirme sürecini kolaylaştıran araçlar.
- spring-boot-devtools: Otomatik yeniden başlatma ve diğer geliştirme özellikleri için.
- Test Dependencies: Test için gerekli bağımlılıklar.
- spring-boot-starter-test: Birim ve entegrasyon testleri için.
- spring-security-test: Güvenlik testleri için.
- h2: Test için bellek içi veritabanı.
Uygulama Konfigürasyonu (application.properties)
Spring Boot uygulamaları,application.properties (veya application.yml) dosyası aracılığıyla yapılandırılır. Bu dosya, veritabanı bağlantı bilgileri, sunucu portu, loglama ayarları gibi çeşitli konfigürasyon parametrelerini içerir.
Aşağıda, e-ticaret uygulaması için örnek bir application.properties dosyası bulunmaktadır:
- Server Configuration: Sunucu portu ve context path ayarları.
- Database Configuration: Veritabanı bağlantı bilgileri.
- JPA/Hibernate Configuration: JPA ve Hibernate ayarları.
- Jackson Configuration: JSON serileştirme/deserileştirme ayarları.
- Logging Configuration: Loglama seviyesi ayarları.
- JWT Configuration: JWT token ayarları.
- File Upload Configuration: Dosya yükleme sınırlamaları.
Profil Tabanlı Konfigürasyon
Spring Boot, farklı ortamlar (geliştirme, test, üretim) için farklı konfigürasyonlar tanımlamanıza olanak tanır. Bu, profil tabanlı konfigürasyon olarak adlandırılır. Profil tabanlı konfigürasyon,application-{profile}.properties dosyaları aracılığıyla yapılır.
application-dev.properties (Geliştirme Ortamı)
application-prod.properties (Üretim Ortamı)
spring.profiles.active parametresini kullanabilirsiniz:
Ana Uygulama Sınıfı (EcommerceApplication.java)
Spring Boot uygulamasının başlangıç noktası,@SpringBootApplication anotasyonu ile işaretlenmiş bir sınıftır. Bu sınıf, uygulamanın başlatılmasını ve yapılandırılmasını sağlar.
- @SpringBootApplication: Bu anotasyon,
@Configuration,@EnableAutoConfigurationve@ComponentScananotasyonlarını birleştirir. Bu, Spring Boot uygulamasının otomatik yapılandırmasını ve bileşen taramasını etkinleştirir. - @EnableJpaAuditing: Bu anotasyon, JPA varlıklarının otomatik denetimini (auditing) etkinleştirir. Bu,
@CreatedDate,@LastModifiedDate,@CreatedByve@LastModifiedByanotasyonlarının çalışmasını sağlar. - main(): Uygulamanın başlangıç noktasıdır.
SpringApplication.run()metodu, Spring Boot uygulamasını başlatır.
Konfigürasyon Sınıfları
Spring Boot uygulamaları, Java tabanlı konfigürasyon sınıfları aracılığıyla da yapılandırılabilir. Bu sınıflar,@Configuration anotasyonu ile işaretlenir ve bean’leri tanımlar.