0

注意:我没有使用 Spring Boot

我收到如下错误

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为 [com.repository.MbrEnrollRepository] ​​的合格 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注释:{}

这是我的存储库,它扩展了 spring data jdbc 的 crud 存储库

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。我还没有找到任何地方,如何为存储库定义一个 bean。

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

如 spring 文档中所示,我在我的配置类中定义了所需的 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());
      }
}

是否可以将 Spring 数据 JDBC 与 spring 4+ 一起使用?如果是,请帮助我....

4

1 回答 1

0

Spring Data JDBC 需要 Spring 5.x

虽然在没有 Spring Boot 的情况下使用 Spring Data JDBC 非常好,但它不适用于 Spring 4。

您拥有的堆栈跟踪中的某处可能已经存在MethodNotFound或类似的异常。如果不是这样,一旦其他问题得到解决,它几乎必然会出现。

于 2019-03-05T15:08:11.487 回答