如何将多个JdbcOperations注入Spring Test Case

时间:2017-10-20 15:56:21

标签: spring dependency-injection spring-batch spring-test

这是我的代码:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/load-BMS-data-job-launcher-context.xml" })
public class SimpleJobLaunchFunctionalTests {

    @Autowired
    private JobLauncherTestUtils jobLauncherUtils;

    @Autowired
    private JdbcOperations jdbcTemplate;

    @Autowired
    private JdbcOperations jdbcTemplateBMS;

    @Autowired
    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    @Autowired
    public void setDataSource(DataSource BMSdataSource) {
        this.jdbcTemplateBMS = new JdbcTemplate(BMSdataSource);
    }   

    @Before
    public void setUp() {
        jdbcTemplate.update("DELETE from SHADOW_BMS");
     // jdbcTemplate.update("DELETE from CMNREF.CNTRCT_EXTRNL_KEY_REF_V");
        jdbcTemplateBMS.update("DELETE from CNTRCT_EXTRNL_KEY_REF_V");

我想连接两个单独的JdbcTemplates来操作此测试类中的两个不同的数据库。我不知道如何设置不同的dataSources - 当我尝试调用第二个setDataSource(DataSource BMSdataSource)方法时,我得到一个异常。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用name =“template1”和name =“template2”创建bean(带注释@Bean(name =“template1”))。在测试中,您可以按如下方式使用它们:

@Qualifier("template1")
@Autowired
private JdbcOperations jdbcTemplate1;

@Qualifier("template2")
@Autowired
private JdbcOperations jdbcTemplate2;