Spring Boot'ta JPA Auditing, bir varlığın kim tarafından ve ne zaman oluşturulduğunu veya değiştirildiğini otomatik olarak izlemenizi sağlar. Bu, denetim kayıtları, geçmiş izleme ve hata ayıklama için oldukça kullanışlıdır.
Yazan
Şuayb Şimşek
Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.
Ana sınıfınıza veya yapılandırma sınıfınıza @EnableJpaAuditing ekleyin.
🛠️ Adım 3: AuditorAware Bean'i Oluşturun
Bu bean, Spring'e geçerli kullanıcıyı bildirir. Statik bir kullanıcı örneği aşağıda:
🛠️ Adım 4: Entity Sınıfına Anotasyonları Ekle
Aşağıdaki gibi denetim anotasyonlarını kullanın: @CreatedDate, @LastModifiedDate, vb.
▶️ Uygulamayı Çalıştırma
Artık bir entityi JpaRepository ile kaydettiğinizde, denetim alanları otomatik olarak doldurulacaktır.
🧪 Test Etme
Bir entity kaydederek denetim alanlarının otomatik olarak doldurulup doldurulmadığını test edebilirsiniz.
🏁 Sonuç
Artık Spring Boot JPA Auditing için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.
JAVADemoApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@SpringBootApplication
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
KOTLINDemoApplication.kt
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.data.jpa.repository.config.EnableJpaAuditing
@SpringBootApplication
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
JAVAAuditingConfig.java
@Configuration
public class AuditingConfig {
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.of("Şuayb");
}
}
KOTLINAuditingConfig.kt
@Configuration
class AuditingConfig {
@Bean
fun auditorProvider(): AuditorAware<String> = AuditorAware { Optional.of("Şuayb") }
}