단일 datasource 설정과 다르게 다중 datasource 는 spring.datasource 뒤에 접두사 primary 와 secondary 로 구분하고 datasource 를 초기화 할때 사용하게 된다.
Springboot 2.x 은 spring.datasource.secondary.jdbc-url 를 사용하고 Springboot 1.x 은 spring.datasource.secondary.url 를 사용하한다. 실행시 java.lang.IllegalArgumentException:jdbcUrl is required with driverClassName 발생하면 해당 버전별 설정이 제대로 되었는지 확인해보면 된다.
@RunWith(SpringRunner.class)@SpringBootTestpublicclassChapter37ApplicationTests { @AutowiredprotectedJdbcTemplate primaryJdbcTemplate; @AutowiredprotectedJdbcTemplate secondaryJdbcTemplate; @BeforepublicvoidsetUp() {primaryJdbcTemplate.update("DELETE FROM USER ");secondaryJdbcTemplate.update("DELETE FROM USER "); } @Testpublicvoidtest() throwsException {primaryJdbcTemplate.update("insert into user(name,age) values(?, ?)","aaa",20);primaryJdbcTemplate.update("insert into user(name,age) values(?, ?)","bbb",30);secondaryJdbcTemplate.update("insert into user(name,age) values(?, ?)","ccc",20);Assert.assertEquals("2",primaryJdbcTemplate.queryForObject("select count(1) from user",String.class));Assert.assertEquals("1",secondaryJdbcTemplate.queryForObject("select count(1) from user",String.class)); }}