Spring4 + SpringDataJDBC, как определить компонент для MyRepository в файле конфигурации - PullRequest
0 голосов
/ 05 марта 2019

Примечание. Я не использую Spring Boot

Я получаю сообщение об ошибке, как показано ниже

org.springframework.beans.factory.NoSuchBeanDefinitionException: не найден квалифицирующий компонент типа [com.repository.MbrEnrollRepository] для зависимости: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат для автоматической передачи для этой зависимости.Аннотации зависимостей: {}

Вот мой репозиторий, который расширяет грубое хранилище данных пружин jdbc

import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.repository.CrudRepository;
public interface MbrEnrollRepository extends CrudRepository<EM_MBR_ENROLLMENT_VO, String> { 
@Query("select count(*) FROM EM_MBR_ENROLLMENT WHERE MEMBER_ID ='W0000000002'")
  int countItems();
}

Я вызываю метод countItems () в своем классе обслуживания.Согласно моим знаниям, контейнер Spring создаст экземпляр репозитория, для этого нам нужно определить bean-компонент репозитория типов в классе конфигурации.Я нигде не нашел того, как определить бин для хранилища.

public class MbrServicesImpl implements MbrServices {
      @Autowired
      private MbrEnrollRepository  repository;  
      public int getEnrollCount() {
         return (int) repository.count();
       }
}

В моем классе конфигурации есть необходимые запрошенные bean-компоненты, как показано в весенних документах.

@EnableWebMvc
@ComponentScan(basePackages = "com.restControllers")
@Configuration
@EnableJdbcRepositories
public class MyBeansConfiguration extends JdbcConfiguration{

   @Bean
   public DriverManagerDataSource dataSource() {
        DriverManagerDataSource ds = new DriverManagerDataSource();
        ds.setDriverClassName("MYDRIVER");
        ds.setUrl("MYURL");
        ds.setUsername("USER");
        ds.setPassword("PASSWORD");
        return ds;
    }
    @Bean
    NamedParameterJdbcOperations operations() {
        return new NamedParameterJdbcTemplate(dataSource());
    }

    @Bean
    PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }

    @Bean
    public MbrServices mbrServicesImpl() {
          MbrServicesImpl mbrServices = new MbrServicesImpl();
          return mbrServices;
    }
}

Мой класс контроллера

@RestController
public class MyRestController{
     @Autowired
      private MbrServices mbrServicesImpl;
      @RequestMapping("/count")
      public String getCount() {
             System.out.println("Inside rest controller method : COUNT ");
             return String.valueOf(service.getEnrollCount());
      }
}

Возможно ли использоватьВесенние данные JDBC с весны 4+?если да, пожалуйста, помогите мне ....

1 Ответ

0 голосов
/ 05 марта 2019

Spring Data JDBC требует Spring 5.x

Хотя Spring Data JDBC без Spring Boot прекрасно подходит, он не будет работать с Spring 4.

Возможно, в вашей трассировке стека уже может быть MethodNotFound или подобное исключение. И если это не так, он почти обязательно появится, как только будут решены другие проблемы.

...