Неудовлетворенная ошибка зависимости через поле в Spring - PullRequest
0 голосов
/ 24 сентября 2018

код ниже работает нормально, но если я комментирую метод jdbcTemplateRandomName в классе OracleConfiguration, я получаю следующую ошибку: -

Я пытаюсь понять, почему я получаю ошибку, комментируя метод jdbcTemplateRandomName Ошибка в BaseDaoImplclass.

Исключение в потоке "main" org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании компонента с именем 'baseDaoImpl': неудовлетворенная зависимость, выраженная через поле 'jdbcTemplate';вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'org.springframework.jdbc.core.JdbcTemplate': ожидается как минимум 1 компонент, который квалифицируется как кандидат для автоматического подключения.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)}

Вызывается: org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет квалифицирующего компонента типа 'org.spring.jdbc.core.JdbcTemplate 'доступно: ожидается как минимум 1 бин, который считается кандидатом на автопровод.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = 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 голосов
/ 24 сентября 2018

Если вы прокомментируете метод jdbcTemplateRandomName(), вы удалите объявление bean-компонента JdbcTemplate из конфигурации Spring IoC.Поэтому Spring не сможет найти подходящий объект для заполнения свойства jdbcTemplate вашего BaseDaoImpl класса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...