환경
- Java 17
- Spring Boot 3.x
- MySQL
- spring-boot-starter-jdbc 사용
1. application.properties 설정
- 꼭 jdbc-url로 적어야 한다.
- 단일 DB 쓸 땐 url도 되지만, 다중 설정에서는 오류난다.
# 첫 번째 DB (기본)
spring.datasource.todo.jdbc-url=jdbc:mysql://localhost:3306/todo
spring.datasource.todo.username=root
spring.datasource.todo.password=1234
spring.datasource.todo.driver-class-name=com.mysql.cj.jdbc.Driver
# 두 번째 DB
spring.datasource.todo-v2.jdbc-url=jdbc:mysql://localhost:3306/todoV2
spring.datasource.todo-v2.username=root
spring.datasource.todo-v2.password=1234
spring.datasource.todo-v2.driver-class-name=com.mysql.cj.jdbc.Driver
2. DataSourceConfig 설정
@Configuration
public class DataSourceConfig {
// 기존 DB
@Primary
@Bean(name = "todoDataSource")
@ConfigurationProperties(prefix = "spring.datasource.todo")
public DataSource todoDataSource() {
return DataSourceBuilder.create().build();
}
// 추가 DB
@Bean(name = "todoV2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.todo-v2")
public DataSource todoV2DataSource() {
return DataSourceBuilder.create().build();
}
}
3. Repository에서 사용 예시
- @Qualifier 어노테이션 사용
- 사용할 DataSource 객체를 선택할 수 있다.
- @Primary 로 설정한 객체는 default 로 사용할 수 있다.
@Repository
public class AuthorRepositoryImpl implements AuthorRepository {
private final JdbcTemplate jdbcTemplate;
public AuthorRepositoryImpl(@Qualifier("todoV2DataSource") DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
}