View Javadoc
1   package fr.tiogars.inception.config;
2   
3   import java.time.Clock;
4   import java.time.Instant;
5   import java.time.temporal.ChronoUnit;
6   import java.util.Optional;
7   
8   import org.springframework.context.annotation.Bean;
9   import org.springframework.context.annotation.Configuration;
10  import org.springframework.data.auditing.DateTimeProvider;
11  import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
12  
13  /** Configures authenticated actors and PostgreSQL-compatible audit timestamps. */
14  @Configuration
15  @EnableJpaAuditing(auditorAwareRef = "securityAuditorAware", dateTimeProviderRef = "auditDateTimeProvider")
16  public class JpaAuditingConfiguration {
17  
18      @Bean
19      public Clock auditClock() {
20          return Clock.systemUTC();
21      }
22  
23      @Bean
24      public DateTimeProvider auditDateTimeProvider(Clock auditClock) {
25          return () -> Optional.of(Instant.now(auditClock).truncatedTo(ChronoUnit.MICROS));
26      }
27  }