package com.spring.common.jpa;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

/**
 * JPA 감사 기능을 설정하는 구성 클래스입니다.
 * 
 * <p>이 클래스는 Spring Data JPA의 감사 기능을 활성화하고,
 * 사용자 감사 정보를 제공하는 AuditorAware 빈을 정의합니다.</p>
 * 
 * <p>감사 기능은 엔티티의 생성 및 수정 시점을 기록하는 데 사용됩니다.</p>
 * 
 * @author mindol
 * @version 1.0
 */
@Configuration
@EnableJpaAuditing
public class JpaAuditConfig {

    /**
     * 사용자 감사 정보를 제공하는 AuditorAware 빈을 생성합니다.
     * 
     * <p>이 메서드는 현재 사용자의 ID를 반환하는 UserAuditorAware 인스턴스를 생성합니다.</p>
     * 
     * @return AuditorAware<String> 현재 사용자의 ID를 제공하는 AuditorAware 인스턴스
     */
    @Bean
    AuditorAware<String> auditorProvider() {
        return new UserAuditorAware();
    }

}
