@SpringBootApplication@EnableJpaAuditing// Auditing 활성화 — 없으면 @CreatedDate 등이 동작하지 않음publicclassBlogApplication{publicstaticvoidmain(String[] args){SpringApplication.run(BlogApplication.class, args);}}
@ConfigurationpublicclassAuditingConfigimplementsAuditorAware<String>{@OverridepublicOptional<String>getCurrentAuditor(){// Spring Security에서 현재 사용자 이름 추출returnOptional.ofNullable(SecurityContextHolder.getContext()).map(SecurityContext::getAuthentication).filter(Authentication::isAuthenticated).map(Authentication::getName);}}
// 커스텀 리스너 클래스publicclassPostAuditListener{@PrePersistpublicvoidprePersist(Post post){// 저장 직전 호출}@PostPersistpublicvoidpostPersist(Post post){// 저장 직후 호출}@PreUpdatepublicvoidpreUpdate(Post post){// 수정 직전 호출}@PostLoadpublicvoidpostLoad(Post post){// 조회 직후 호출}}// 엔티티에 커스텀 리스너 적용@Entity@EntityListeners({AuditingEntityListener.class,PostAuditListener.class})publicclassPostextendsBaseEntity{...}