1
votes

below code is working fine but if i comment the jdbcTemplateRandomName method in OracleConfiguration class i get the below error : -

I am trying to understand why i am getting the error by commenting jdbcTemplateRandomName method Error is in BaseDaoImpl class.

Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'baseDaoImpl': 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)}

Caused by: 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)}

@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
Is your OracleConfiguration class annotated with @Configuration?chrylis -cautiouslyoptimistic-
Hello Chryllis.Yes it is .I will add @Configuration in the questionRaj R

1 Answers

1
votes

If you comment jdbcTemplateRandomName() method you will remove declaration of JdbcTemplate bean from your Spring IoC configuration. So Spring will not be able to find suitable object to populate jdbcTemplate property of your BaseDaoImpl class