Spring4 + SpringDataJDBC,如何在配置文件

时间:2019-03-05 12:00:28

标签: spring-mvc spring-data spring-data-jdbc

注意:我没有使用Spring Boot

我收到如下错误

org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到类型为[com.repository.MbrEnrollRepository]的合格Bean:需要至少1个符合此依赖项自动候选条件的bean。依赖项注释:{}

这是我的存储库,它正在扩展spring数据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();
       }
}

我在配置类中捍卫了必需的bean,如spring文档中所示。

@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 4+中使用Spring数据JDBC?如果是,请帮助我。...

1 个答案:

答案 0 :(得分:0)

Spring Data JDBC需要Spring 5.x

虽然在没有Spring Boot的情况下使用Spring Data JDBC是完全可以的,但不适用于Spring 4。

您在堆栈跟踪中的某处可能已经存在MethodNotFound或类似的异常。 如果不是,那么一旦解决其他问题,它几乎肯定会出现。