JPA/JPA
AuditorAware
마늘냄새폴폴
2021. 9. 23. 05:08
@Bean
public AuditingAware<String> auditorProvider() {
return () -> {
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
String loginId = (String) attr.getRequest().getSessio().getAttribute("loginId");
if (loginId != null) {
return Optional.of(loginId);
}
else {
return Optional.of("Anonymous");
}
}
}
*JPA Auditing AuditorAware
Auditing에서 createdDate, lastModifiedDate는 @EnableJpaAuditing와 @CreatedDate, @LastModifiedDate를 이용하면 자동으로 값을 넣어준다. 하지만 @CreatedBy, @LastModifiedBy는 자동으로 값을 넣어주지 않는다. AuditorAware를 @Bean으로 스프링 빈에 올려서 직접 주입받아야 한다.
보통 createdBy, lastmodifiedBy의 값으로 세션값을 넣는 것이 보통이다. HttpServletRequest, HttpServletResponse, HttpSession과 같은 서블릿 객체를 얻기 위해서는 RequestContextHolder에서 현재 값을 받아온다.