0
votes

Spring-boot: Erreur d'injection multiple de haricots

J'essaie d'obtenir une demande de travail au démarrage, mais je cours dans des erreurs d'injections. J'ai un @service avec quelques classes @Autowire. Les classes Notre Just Pojo avec un Public Sedatsource Code> Méthode que j'ai besoin de définir la DataSource via l'exécution. Voir ci-dessous:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field datasetDao in com.wk.online.services.LicenseService required a single bean, but 3 were found:
    - createAuthReadDataSoure: defined by method 'createAuthReadDataSoure' in com.wk.online.ws.OnlineWsApplication
    - createOnlineDSReadDataSoure: defined by method 'createOnlineDSReadDataSoure' in com.wk.online.ws.OnlineWsApplication
    - createOnlineDSWriteDataSoure: defined by method 'createOnlineDSWriteDataSoure' in com.wk.online.ws.OnlineWsApplication


Action:

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed


1 commentaires

Pourriez-vous ajouter du code pour ces 3 méthodes: CreeAuthreadDatasoure, CreateONLineDsReadDataSoure, CreateONLinedSwriitedataSoure ???


3 Réponses :


1
votes

Avez-vous @bean Annotation sur les méthodes suivantes dans OnlineWsApplication Classe?

  • créeAuthreaddatasoure
  • CreateONLineDsReadDataSoure
  • CreateONlineDswritedataSoure

    Si oui, éloignez-vous d'eux.

    Code complet de OnlineWsApplication serait très utile de le répandre.


1 commentaires

Oui, c'était la question. Je devais avoir été une longue journée car ce n'était pas évident et je ne l'ai pas vu. Merci beaucoup.



1
votes

Lors de la définition du haricot, vous devez spécifier le nom, non qualificatif, l'annotation de qualificatif doit être utilisée dans la mesure où vous aurez la diffusion:

@Bean(name = "datasetDao")
public com.lexi.dao.core.DatasetDAO getDatasetDao() throws NamingException {
    DatasetDAOImpl ds = new DatasetDAOImpl();
    ds.setDataSource(createAuthReadDataSoure());

    return ds;
}


0 commentaires

1
votes

dans la définition des haricots, au lieu de @Haricot @Qualifier ("DataSetDao")

Essayez d'utiliser ce qui suit: @Bean (Nom = "DataSetDao")


0 commentaires