Spring中通过字段的不满足依赖性错误

时间:2018-09-24 19:00:23

标签: java spring spring-jdbc jdbctemplate

下面的代码工作正常,但是如果我注释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));

1 个答案:

答案 0 :(得分:1)

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