【问题标题】:how to inject multiple JdbcOperations into Spring Test Case如何将多个 JdbcOperations 注入 Spring 测试用例
【发布时间】:2017-10-20 15:56:20
【问题描述】:

这是我的代码:

@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");

我想连接两个单独的 JdbcTemplate 来操作这个测试类中的两个不同的数据库。我不知道如何设置不同的数据源 - 当我尝试调用第二个 setDataSource(DataSource BMSdataSource) 方法时出现异常。

我该怎么做?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢 - 我想我必须调用 setDataSource(DS ds) 两次:每个 jdbc tmplate 一次......但它们已经与数据源预先连接。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2011-02-10
    相关资源
    最近更新 更多