package incheon.com.config;

import incheon.com.config.annotation.ExternalDB;
import incheon.com.config.annotation.MainDB;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @ClassName : EgovConfigAppMapperScan.java
 * @Description : 어노테이션 기반 자동 매퍼 분기 설정
 *
 * @author : 개선작업
 * @since  : 2024. 12. 19
 * @version : 1.0
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 *
 *   수정일              수정자               수정내용
 *  -------------  ------------   ---------------------
 *   2024. 12. 19   개선작업             어노테이션 기반 자동 매퍼 분기 설정
 * </pre>
 */
@Configuration
public class EgovConfigAppMapperScan {

    /**
     * 메인 DB용 매퍼 스캔 설정
     * - @MainDB 어노테이션이 붙은 매퍼들만 스캔
     */
    @Bean
    public static MapperScannerConfigurer mainMapperScanner() {
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        configurer.setBasePackage("incheon"); // 모든 경로 스캔
        configurer.setAnnotationClass(MainDB.class); // 이 어노테이션이 붙은 매퍼만 스캔
        configurer.setSqlSessionTemplateBeanName("sqlSessionTemplate");
				configurer.setLazyInitialization("true");
        return configurer;
    }

    /**
     * 외부 DB용 매퍼 스캔 설정
     * - @ExternalDB 어노테이션이 붙은 매퍼들만 스캔
     */
    @Bean
    public static MapperScannerConfigurer externalMapperScanner() {
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        configurer.setBasePackage("incheon"); // 모든 경로 스캔
        configurer.setAnnotationClass(ExternalDB.class); // 이 어노테이션이 붙은 매퍼만 스캔
        configurer.setSqlSessionTemplateBeanName("externalSqlSessionTemplate");
				configurer.setLazyInitialization("true");
        return configurer;
    }
} 