back-end/spring boot

[오류] 다중 데이터베이스 설정을 각각 했는데 같은 설정값이 적용된 경우

study-minjeong 2024. 7. 16. 14:08

오류 발생 상황 : 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){
}