오류 발생 상황 : primary db와 연결하기 위해 만든 config 파일에서 second db의 정보 값을 가져온 datasource가 생성되었다. 이 datasource를 사용하고 있는데 primary db에 있는 테이블을 조회하려고 해서 오류가 발생했다!
나는 DataSourceConfig와 SecondDataSourceConfig를 각각 작성해주었다.
DataSourceConfig.groovy
@Bean
@ConfigurationProperties(prefix = "spring.datasource.primary")
DataSourceProperties dataSourceProperties() {
return new DataSourceProperties()
}
@Bean(name="datasource")
public DataSource dataSource() {
DataSourceProperties properties = datasourceProperties()
// 아래에는 datasource 설정
}
SecondDataSourceConfig.groovy
@Bean
@ConfigurationProperties(prefix = "spring.datasource.second")
DataSourceProperties dataSourceProperties() {
return new DataSourceProperties()
}
@Bean(name="datasource2")
public DataSource dataSource() {
DataSourceProperties properties = datasourceProperties()
// 아래에는 datasource 설정
}
DataSoruceConfig에서 DataSrouceProperties를 가져와서 application.yml에 작성된 정보 값을 가져와 사용하려고 했다. 근데 DataSourceProperties 함수를 호출할 때 secondConfig의 dataSourceProperties()를 호출해 second db 정보 값이 들어오는 것이었다... (나는 각자 클래스의 함수를 호출할 줄 알았다...)
해결 방법은 SecondDataSourceConfig.groovy의 dataSource2Properties()로 이름을 변경해주었다!
@Qualifier로 명칭 지정해주는 방법도 있다!
public DataSource dataSource(@Autowired @Qualifier("primaryProperties") DataSourceProperties properties){
}