我的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