@EnableJpaAuditing 는 Entity에 있어서 기본적으로 포함되는 createdAt, modifiedAt, createdBy, modifiedBy등을 자동으로 주입시킬 수있도록 해주는 설정이다.
@EnableJpaAuditing
@EnableJpaRepositories
public class MyDictionaryApplication extends WebMvcConfigurerAdapter
}
기본적으로 Auditing을 적용하기 위해서는 아래처럼 Entity에 @EntityListeners Annotation을 추가하고 기본 제공되는 AuditingEntityListener를 지정한다.
@Data
@Entity
@EntityListeners(value = { AuditingEntityListener.class })
public class XEntity {
...
}
@CreatedDate // 처음 entity가 저장될때 생성일을 주입해준다.
@CreatedBy // 생성자 주입
@LastModifiedDate // entity가 수정될때 수정일자를 주입해준다.
@LastModifiedBy // 수정자 주입
일자의 경우는 Date타입 속성에 @CreatedDate, @LastModifiedDate만 지정하면 되지만 생성자/수정자의 경우는 별도의 구현체를 지정해야 한다.
public class AuthAndDateAuditorAware implements AuditorAware<String> {
@Override
public String getCurrentAuditor() {
return "userId";
}
}
만일 Spring Security를 사용한다면,
public String getCurrentAuditor() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null || !authentication.isAuthenticated()) {
return null;
}
return ((User) authentication.getPrincipal()).getUsername();
}
Entity:
@Column(name = "modified_by_user", nullable = false)
@LastModifiedBy
private String modifiedByUser;