注意:我没有使用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?如果是,请帮助我。...
答案 0 :(得分:0)
Spring Data JDBC需要Spring 5.x
虽然在没有Spring Boot的情况下使用Spring Data JDBC是完全可以的,但不适用于Spring 4。
您在堆栈跟踪中的某处可能已经存在MethodNotFound
或类似的异常。
如果不是,那么一旦解决其他问题,它几乎肯定会出现。