我的Spring Java配置風格的配置與2點的數據源:春JUNIT數據源自動連接
@Configuration
@EnableTransactionManagement
public class DBConfig {
// main db
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:schema.sql")
.addScript("classpath:data.sql")
.build();
}
//db for test
@Bean(name = "testDataSource")
public DataSource testDataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:schema.sql")
.addScript("classpath:test-data.sql")
.build();
}
@Bean
public JdbcTemplate jdbcTemplate(){
return new JdbcTemplate(dataSource());
}
但是,當我自動裝配,在我的測試類的數據源和運行他:我得到了相同的結果:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = DBConfig.class)
@Transactional
public class JdbcTest {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
@Qualifier("testDataSource")
private DataSource testDataSource;
@Test
public void findRealDb() {
String rowCount = jdbcTemplate.queryForObject("select message from messages", String.class);
System.out.println("real db " + rowCount);
}
@Test
public void findTestDb() {
String rowCount = (new JdbcTemplate(testDataSource).queryForObject("select message from messages", String.class));
System.out.println("test db " + rowCount);
}
}
因此,作爲結果的方法,findTestDb()日誌一樣rowCount時字符串findRealDb(),但是當你看到他們使用不同的數據源建立的JdbcTemplate。
雖然它看起來像你使用2點的數據源,因此2個獨立的數據庫,你不是。您正在使用2個數據源,但使用單個數據庫。 – 2015-04-02 09:57:08
看起來像接線兩個數據源只能幫助您驗證正確的接線。將非測試數據源連接到測試中的用例是什麼? – 2015-04-02 11:47:20