下面的代码工作正常,但是如果我注释OracleConfiguration类中的jdbcTemplateRandomName方法,则会出现以下错误:-
我试图通过注释jdbcTemplateRandomName方法来理解为什么出现错误 错误在BaseDaoImpl类中。
线程“主”中的异常 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为'baseDaoImpl'的bean时出错:不满意的依赖关系 通过字段“ jdbcTemplate”表示;嵌套异常为 org.springframework.beans.factory.NoSuchBeanDefinitionException:否 类型为“ org.springframework.jdbc.core.JdbcTemplate”的合格bean 可用:至少有1个符合自动装配条件的bean 候选人。依赖注释: {@ org.springframework.beans.factory.annotation.Autowired(required = true)}
原因: org.springframework.beans.factory.NoSuchBeanDefinitionException:否 类型为“ org.springframework.jdbc.core.JdbcTemplate”的合格bean 可用:至少有1个符合自动装配条件的bean 候选人。依赖注释: {@ org.springframework.beans.factory.annotation.Autowired(required = true)}
@Component
public class BaseDaoImpl {
@Autowired
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
@Configuration
public class OracleConfiguration {
@Bean
DataSource dataSource() throws SQLException {
OracleDataSource dataSource = new OracleDataSource();
//removed code for brevity setting username,password to datasource
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplateRandomName(DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setResultsMapCaseInsensitive(true);
return jdbcTemplate;
}
public class RolesDaoImpl extends BaseDaoImpl implements RolesDao {
//removed lot of unnecessary code for the question
List<Roles> rolesList = getJdbcTemplate().query(sql,
new BeanPropertyRowMapper<Roles>(Roles.class));
答案 0 :(得分:1)
如果您注释jdbcTemplateRandomName()
方法,则会从Spring IoC配置中删除JdbcTemplate
bean的声明。因此,Spring将无法找到合适的对象来填充您的jdbcTemplate
类的BaseDaoImpl
属性