Хорошо, я сделал обходной путь, который работает.
(За кулисами) В моем случае у меня есть 2 источника данных в пакетах test и src, когда я тестирую метод в src, у него есть @Autowired
DataSource, и он просит использовать компонент, который квалифицированс c1
, но так как у меня не было c1
источника данных в моем testC1Config()
, я получил это исключение.
Таким образом, вместо автоматической разметки bean-компонента и использования спецификатора с конкретным именем, я написал autowired setter с квалификатором, содержащим такое же имя в bean-конфигураторе src.
@Autowired
@Qualifier("c1")
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
Для моего случая я также создаю 2 jdbcTemplates, таким образом, всякий раз, когда я запускаю тест, Бин вводит нужный мне DataSource и делает что-то для менядо @Test
.В этом случае не нужно указывать имена bean-компонентов в конфигурации, но в службах @Qualifier("with_same_name_in_src_and_test")
.
Не знаю, насколько это хороший подход к этой проблеме, но ... он работает.