1. Config 생성
@EnableJpaAuditing 어노테이션을 추가하여 Annotation 을 사용하여 Audit 활성화
@Configuration
@EnableJpaAuditing
public class JpaAuditConfig {
@Bean
public AuditorAware<Long> auditorProvider() {
return new AuditorAwareImpl();
}
}
2. AuditorAware 구현체 생성
getCurrentAuditor() 를 구현하여 등록자, 수정자에 사용될 사용자 정보를 불러온 후 리턴한다.
public class AuditorAwareImpl implements AuditorAware<Long> {
@Override
public Optional<Long> getCurrentAuditor() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if(null == authentication || !authentication.isAuthenticated()) {
return null;
}
//사용자 환경에 맞게 로그인한 사용자의 정보를 불러온다.
CustomUserDetails userDetails = (CustomUserDetails)authentication.getPrincipal();
return Optional.of(userDetails.getId());
}
}
3. BaseEntity 생성
@MappedSuperclass 어노테이션을 추가하여 공통 매핑정보 라는것을 정의한다.
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
@Getter
public abstract class BaseEntity {
//등록일
@CreatedDate
@Column(updatable = false)
protected LocalDateTime createDate;
//수정일
@LastModifiedDate
protected LocalDateTime lastModifedDate;
//등록자
@CreatedBy
@Column(updatable = false)
protected Long createBy;
//수정자
@LastModifiedBy
protected Long lastModifedBy;
}
4. Sample Entity 생성
BaseEntity 를 상속받는 Entity 를 생성한다.
@Entity
@Table(name="board")
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SampleBoard extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
}
모든 설정이 끝나고 테스트를 해보면 BaseEntity 에 정의한 컬럼에 값이 자동으로 입력된것을 확인할 수 있다.
'개발 > 스프링 프레임워크' 카테고리의 다른 글
[Spring Boot] JPA + PostgreSQL 연결 (1) | 2024.04.19 |
---|---|
[SpringBoot3 + Log4j2] Routing 활용하여 요청별 로그파일 생성 (0) | 2023.07.26 |
[Spring Boot] AutoConfigureMockMvc 사용하여 Controller 테스트 (0) | 2023.07.04 |
[Spring Boot] H2 + JPA 세팅 (1) | 2022.07.21 |
[Spring Secutiry] Invalid CSRF token found for... (0) | 2020.09.15 |