注意:我没有使用 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+ 一起使用?如果是,请帮助我....