Whole Source Code has the problem belowFrühling @Qualifier und @Autowire funktioniert nicht
ich mit zwei Datenbanken arbeiten bin. Also habe ich zwei Datenquellen mit anderem Namen hinzugefügt. Als ich dachte, ich injiziere richtige Datenquelle. Ich habe unten einen unerwarteten Fehler erhalten. Was stimmt nicht mit meinen Codes?
meine application.yml Datei
<pre>
spring:
datasource:
source:
driver-class-name: org.sqlite.JDBC
url: jdbc:sqlite::resources/db/StudentCarrer.db3
destination:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://nas4:3306/cku
username: cku
password: cku
</pre>
meine DBConfig.java Datei
<pre>
@Configuration
public class DBConfig {
@Bean(name = "srcDataSource")
@ConfigurationProperties(prefix = "spring.datasource.source")
public DataSource srcDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "srcJdbcTemplate")
public JdbcTemplate srcJdbcTemplate(@Qualifier("srcDataSource") DataSource srcDataSource) {
return new JdbcTemplate(srcDataSource);
}
@Bean(name = "dstDataSource")
@ConfigurationProperties(prefix = "spring.datasource.destination")
public DataSource dstDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dstJdbcTemplate")
public JdbcTemplate dstJdbcTemplate(@Qualifier("dstDataSource") DataSource dstDataSource) {
return new JdbcTemplate(dstDataSource);
}
}
</pre>
meine DBImporter.java Datei
<pre>
@Component
public class DBImporter {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired @Qualifier("srcDataSource")
public DataSource srcDataSource;
@Autowired @Qualifier("srcJdbcTemplate")
public JdbcTemplate srcJdbcTemplate;
@Autowired @Qualifier("dstDataSource")
public DataSource dstDataSource;
@Autowired @Qualifier("dstJdbcTemplate")
public JdbcTemplate dstJdbcTemplate;
}
</pre>
Und ich habe diesen Fehler.
<pre>
***************************
APPLICATION FAILED TO START
***************************
Description:
Field srcDataSource in com.cku.assmt.dbimp.DBImporter required a single bean, but 2 were found:
- srcDataSource: defined by method 'srcDataSource' in class path resource [com/cku/assmt/dbimp/DBConfig.class]
- dstDataSource: defined by method 'dstDataSource' in class path resource [com/cku/assmt/dbimp/DBConfig.class]
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
</pre>
Sind Sie absolut sicher, dass Sie richtig 'org importieren .springframework.beans.factory.annotation.Qualifier' im 'DbImporter'? Das ergibt wirklich keinen Sinn für mich. – zero01alpha
Dies ist der Code mit dem Problem. https://kldp.org/files/dbimp.test_.zip – Shinbop
Ja, ich klicke nicht darauf. Fügen Sie es zu Ihrem Post hinzu, wenn Sie möchten, dass die Leute es sehen. – zero01alpha