首页 > 解决方案 > Spring中通过字段的不满意的依赖错误

问题描述

下面的代码工作正常,但如果我在 OracleConfiguration 类中注释 jdbcTemplateRandomName 方法,我会收到以下错误:-

我试图通过评论 jdbcTemplateRandomName 方法 Error is in 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));

标签: javaspringspring-jdbcjdbctemplate

解决方案


如果您注释方法,您将从Spring IoC 配置jdbcTemplateRandomName()中删除 bean 的声明。JdbcTemplate所以 Spring 将无法找到合适的对象来填充jdbcTemplate你的BaseDaoImpl类的属性


推荐阅读