package kr.xit.core.spring.config;

import org.springframework.batch.core.configuration.annotation.DefaultBatchConfigurer;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * <pre>
 * description : Spring batch Meta table 비활성 : 비 권고
 *               @EnableBatchProcessing -> BatchConfigurationSelector import
 *               BatchConfigurationSelector -> SimpleBatchConfiguration 반환
 *               SimpleBatchConfiguration -> BatchConfigurer 타입의 빈을 조회하여 사용
 *               - jobRepository, jobLauncher, transactionManager, jobRegistry, jobExplorer 인스턴스 생성
 *               - @Bean 어노테이션에 의해 빈으로 등록
 *               - 생성되는 인스턴스는 DefaultBatchConfigurer에 정의
 *               메타테이블 비활성을 위해
 *               - DefaultBatchConfigurer 상속
 *               - EnableBatchProcessing 지정
 *               - setDatasource 메소드 override
 *
 * fileName    : CustomBatchConfigurer
 * author      : julim
 * date        : 2023-04-28
 * ======================================================================
 * 변경일         변경자        변경 내용
 * ----------------------------------------------------------------------
 * 2023-04-28    julim       최초 생성
 *
 * </pre>
 */
@Configuration
@EnableBatchProcessing
@EnableScheduling
public class CustomBatchConfigurer extends DefaultBatchConfigurer {

/*
  @Override
  public void setDataSource(DataSource dataSource) {
    // Do nothing
  }
*/
  /**
   * FIXME::JPA 사용시 추가
   * @param emf
   * @return
   */
  // @Bean
  //@Primary  // SimpleBatchConfiguration 에서 생성된 빈 대체
  // public PlatformTransactionManager jpaTransactionManager(EntityManagerFactory emf) {
  //   return new JpaTransactionManager(emf);
  // }


}
