Files
spring-batch-quartz/batch-quartz/src/main/java/com/spring/infra/db/SecondaryDataSourceConfig.java
mindol1004 ecbf7f8698 commit
2024-08-28 18:53:15 +09:00

64 lines
2.4 KiB
Java

package com.spring.infra.db;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy;
import com.zaxxer.hikari.HikariDataSource;
/**
* 보조 데이터 소스 설정을 위한 구성 클래스입니다.
*
* <p>이 클래스는 애플리케이션의 보조 데이터 소스를 설정하며, 다음과 같은 기능을 제공합니다:</p>
* <ul>
* <li>보조 데이터 소스 속성 설정</li>
* <li>HikariCP를 사용한 보조 데이터 소스 생성</li>
* </ul>
*
* @author mindol
* @version 1.0
*/
@Configuration
public class SecondaryDataSourceConfig {
public static final String DATABASE = "secondary";
public static final String DATASOURCE = "secondaryDataSource";
private static final String DATASOURCE_PROPERTIES = "secondaryDataSourceProperties";
private static final String DATASOURCE_PROPERTIES_PREFIX = "spring.datasource.secondary";
/**
* 보조 데이터 소스의 속성을 설정합니다.
*
* <p>이 메소드는 'spring.datasource.secondary' 접두사로 시작하는 설정을 읽어
* DataSourceProperties 객체를 생성합니다.</p>
*
* @return 설정된 DataSourceProperties 객체
*/
@Bean(name = DATASOURCE_PROPERTIES)
@ConfigurationProperties(prefix = DATASOURCE_PROPERTIES_PREFIX)
DataSourceProperties dataSourceProperties() {
return new DataSourceProperties();
}
/**
* 보조 데이터 소스를 생성합니다.
*
* <p>이 메소드는 설정된 DataSourceProperties를 사용하여 HikariCP 데이터 소스를 생성합니다.</p>
*
* @param properties 데이터 소스 속성
* @return 생성된 DataSource 객체
*/
@Bean(name = DATASOURCE)
DataSource dataSource(@Qualifier(DATASOURCE_PROPERTIES) DataSourceProperties properties) {
return new LazyConnectionDataSourceProxy( // 커넥션이 필요한 경우에만 datasource 에서 connection 을 반환
properties.initializeDataSourceBuilder().type(HikariDataSource.class).build()
);
}
}