我是Spring Cloud的新手,想写一个简单的#34; hello world" RDS计划。
我的配置存储在xml配置中,如下所示。
<aws-context:context-credentials>
...
</aws-context:context-credentials>
<aws-context:context-region region="ap-southeast-1" />
<jdbc:data-source db-instance-identifier="amazonrds"
password="${password}" read-replica-support="false">
<jdbc:pool-attributes initialSize="1"
defaultCatalog="Records" testOnBorrow="true" validationQuery="SELECT 1" />
</jdbc:data-source>
我有一个简单的DB服务类,其内容如下所示。
@Service
public class JdbcRecordService implements RecordService {
private final JdbcTemplate jdbcTemplate;
@Autowired
public JdbcRecordService(DataSource datasource) {
this.jdbcTemplate = new JdbcTemplate(datasource);
}
@Override
@Transactional(readOnly = true)
public List<Record> all() {
return this.jdbcTemplate.query("SELECT * FROM Records", new RowMapper<Record>() {
@Override
public Record mapRow(ResultSet resultSet, int rowNum) throws SQLException {
return new Record(resultSet.getString("Name"), resultSet.getString("Value"));
}
});
}
@Override
@Transactional
public void store(Record record) {
this.jdbcTemplate.update("INSERT INTO Records(Name, Value) VALUES (?,?)", record.getKey(), record.getValue());
}
}
Application类就是这样。
@SpringBootApplication
@EnableAutoConfiguration
@Configuration
@ComponentScan
@ImportResource("classpath:aws-config.xml")
public class SpringBootAwsApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAwsApplication.class, args);
}
}
我知道我在这里缺少一些连接器,但我无法弄清楚它是什么。目前,它在构建时会抛出此错误。
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jdbcRecordService' defined in file [C:\Users\codev\gitlab\springaws\target\classes\base\rds\JdbcRecordService.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.apache.tomcat.jdbc.pool.DataSource]: : No qualifying bean of type [org.apache.tomcat.jdbc.pool.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.apache.tomcat.jdbc.pool.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
它基本上说,没有bean候选者可以使用DataSource参数自动装配构造。我在这里缺少什么?
编辑:我的问题只是通过重新排序我的POM.xml中的依赖来解决。我仍然不知道哪个特定的依赖冲突导致了这个问题,但只是将aws-java-sdk
移动到依赖列表的顶部修复了我的问题。