Ho un'applicazione Spring e in essa I non utilizzare uso configuraion xml, solo Condfig Java. Tutto è OK, ma quando provo a test ho avuto problemi con l'attivazione di awtowiring di componenti nei test. Quindi cerchiamo di iniziare ho un un'interfacciaCome creare l'istanza dell'interfaccia CrudRepository durante i test in primavera?
@Repository
public interface ArticleRepository extends CrudRepository<Page, Long> {
Article findByLink(String name);
void delete(Page page);
}
E un componente/servizio
@Service
public class ArticleServiceImpl implements ArticleService {
@Autowired
private ArticleRepository articleRepository;
...
}
Non voglio usare le configurazioni XML così per i miei test cerco di testare ArticleServiceImpl utilizzando solo Configurazione Java. Quindi, ai fini di test che ho fatto:
@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;
}
}
In articleServiceImpl() ho bisogno di mettere istanza di articleRepository(), ma si tratta di un'interfaccia. Come creare un nuovo oggetto con una nuova parola chiave? È possibile senza creare la classe di configurazione xml e abilitare Autowiring? Può awtowired essere abilitato quando si usano solo JavaConfigurations durante il test?
No, non è così. Hai '@ Autowired 'quindi non hai bisogno di impostarlo. Devi mettere '@ EnableJpaRepositories' sulla tua classe di configurazione per consentire a Spring Data JPA di creare i bean per te. –
Per ArticleServiceImpl ho anche Awtowire quindi non ho nemmeno bisogno di scrivere articleServiceImpl()? Ho ragione? Non riesco a capire come Spring sappia attivare Autowiring per i test. Errore nella creazione di bean con nome 'articleServiceImpl': Iniezione di dipendenze autowired non riuscite; l'eccezione annidata è org.springframework.beans.factory.BeanCreationException: Impossibile eseguire il campo autowire: private com.musala.repository.ArticleRepository – Xelian
@ M.Deinum ha la risposta corretta. – Jaiwo99