티스토리 뷰

출처 : blog.naver.com/ljpark6/221726697771

 

Spring data common 프로젝트에는 CreateBy, CreatedDate, LastModifiedBy, LastModifiedDate 애노테이션이 존재한다. 네이밍그대로 누가 언제 생성하였고, 누가 언제 변경하였는지를 의미한다

@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
//@Getter @Setter
public abstract class CommonTbl {
	//@Temporal(TemporalType.TIMESTAMP)
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
	@CreatedDate
	@Column(name="regist_dt")
	@Schema(description ="등록 일시" )
	protected LocalDateTime registDt;

	@Column(name="regist_id")
	@CreatedBy
	@Schema(description ="등록 아이디" )
	protected String registId;

	//@Temporal(TemporalType.TIMESTAMP)
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
	@LastModifiedDate
	@Column(name="modify_dt")
	@Schema(description ="수정 일시" )
	protected LocalDateTime modifyDt;

	@Column(name="modify_id")
	@LastModifiedBy
	@Schema(description ="수정 아이디" )
	protected String modifyId;
@Entity
@Table(name="t_wd_term")
@NamedQuery(name="TWdTerm.findAll", query="SELECT t FROM TWdTerm t")
public class TWdTerm extends CommonTbl implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name="T_WD_TERM_TERMSN_GENERATOR", sequenceName="T_WD_TERM_TERM_SN_SEQ", allocationSize = 1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="T_WD_TERM_TERMSN_GENERATOR")
	@Column(name="term_sn")
	@Schema(description ="용어 일련번호" )
	private Integer termSn;

	@Column(name="data_fom")
	@Schema(description ="데이터 형식" )
	private String dataFom;

등록시에는 수정일자 수정되지 않도록 하려면 modifyOnCreate = false

@Configuration
@EnableJpaAuditing( modifyOnCreate = false )
public class WebConfig implements WebMvcConfigurer {

    /*
     * 로그인 인증 Interceptor 설정
     */
    @Autowired
    LoginCheckInterceptor loginCheckInterceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginCheckInterceptor)
		        .addPathPatterns("/api/**")
		        .addPathPatterns("/*/page")
        		.excludePathPatterns("/api/login/**") //로그인 쪽은 제외
        		.excludePathPatterns("/login/**") //로그인 쪽은 제외
                ;
    }
    
    /*
     * 로그인 사용자로 registId, modifyId 설정
     */
	@Bean
	public AuditorAware<String> auditorProvider() {
		return new AuditorAwareImpl();
	}
}
public class AuditorAwareImpl implements AuditorAware<String>{

	@Override
	public Optional<String> getCurrentAuditor() {
		HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
		String loginId = SessionUtil.getLoginId(request);

		return Optional.ofNullable(loginId);

	}
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함