2017-10-20 15 views
0

Voici mon code:comment injecter plusieurs JdbcOperations dans Spring Test Case

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

Je veux câbler deux JdbcTemplates séparés pour fonctionner sur deux bases de données distinctes à l'intérieur de cette classe de test. Je ne sais pas comment définir différentes sources de données - Je reçois une exception lorsque j'essaie d'appeler la deuxième méthode setDataSource (DataSource BMSdataSource).

Comment faire cela?

Répondre

0

Vous pouvez créer des beans avec name = "template1" et name = "template2" (avec des annotations @Bean (name = "template1")). Dans le test que vous les utilisez comme suit:

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

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

Merci - Je pensais que je devais appeler la setDataSource (DS ds) deux fois: une fois pour chaque tmplate jdbc ... mais ils sont déjà pré-câblé avec source de données. Merci encore. – JamesD