我有一个SpringBoot 2.0.4应用程序,并且正在使用JdbcTemplates。当我被要求在2个DB之间进行数据传输时,一切都正常了。
所以我建立了2个这样的数据源:
@Configuration
public class OracleConfiguration {
@Bean(name = "oracleDataSource")
@ConfigurationProperties(prefix = "oracle.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
我的DAO是这样的:
@Repository
@Component
public class personDao extends JdbcDaoSupport {
static final Logger logger = LoggerFactory.getLogger(CymNetworkDao.class);
@Autowired
public void setDs(@Qualifier("oracleDataSource") DataSource dataSource) {
setDataSource(dataSource);
}
public List<PersonBean> findAll() {
List<PersonBean> result = getJdbcTemplate().query("SELECT * FROM PERSON", new PersonRowMapper());
return result;
}
}
我收到此错误:
Unsatisfied dependency expressed through field 'jdbcTemplate';
nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'org.springframework.jdbc.core.JdbcTemplate' available:
expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=oracleJdbcTemplate)}
我阅读教程的内容是告诉我只是自动连接数据源,然后jdbcTemplate会自行创建。我是排位赛错误还是其他原因?
答案 0 :(得分:1)
您应该通过注入jdbcTemplate
来创建DataSource
,如下例所示
@Repository
public class personDao {
private JdbcTemplate oracleJdbcTemplate;
@Autowired
public void setDataSource(@Qualifier("oracleDataSource") DataSource dataSource) {
this.oracleJdbcTemplate = new JdbcTemplate(dataSource);
}
在错误消息中,它清楚地表明它丢失了JdbcTemplate
bean
@org.springframework.beans.factory.annotation.Qualifier(value=oracleJdbcTemplate)}