У меня есть приложение Spring и в нем я не использую конфигурацию xml, только Java Config. Все в порядке, но при попытке проверить это я столкнулся с проблемами с включением автопроводки компонентов в тестах. Итак, начнем. У меня есть интерфейс:
@Repository
public interface ArticleRepository extends CrudRepository<Page, Long> {
Article findByLink(String name);
void delete(Page page);
}
И компонент/сервис:
@Service
public class ArticleServiceImpl implements ArticleService {
@Autowired
private ArticleRepository articleRepository;
...
}
Я не хочу использовать конфигурации xml, поэтому для своих тестов я пытаюсь протестировать ArticleServiceImpl, используя только конфигурацию Java. Итак, для целей теста я сделал:
@Configuration
@ComponentScan(basePackages = {"com.example.core", "com.example.repository"})
public class PagesTestConfiguration {
@Bean
public ArticleRepository articleRepository() {
// (1) What to return ?
}
@Bean
public ArticleServiceImpl articleServiceImpl() {
ArticleServiceImpl articleServiceImpl = new ArticleServiceImpl();
articleServiceImpl.setArticleRepository(articleRepository());
return articleServiceImpl;
}
}
В articleServiceImpl() мне нужно поместить экземпляр articleRepository(), но это интерфейс. Как создать новый объект с новым ключевым словом? Возможно ли это без создания класса конфигурации xml и включения Autowiring? Можно ли включить автоматическое подключение при использовании только JavaConfigurations во время тестирования?