自动连接合格数据源不起作用

时间:2018-08-15 22:32:27

标签: spring jdbctemplate

我有一个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会自行创建。我是排位赛错误还是其他原因?

1 个答案:

答案 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)}