首先,我用interface BaseRepository extends JpaRepository<User,Integer>然后我在我的test放在中用
@Autowired
private BaseRepository baseRepository获取该bean,然后成功进行了CURD
但是当我把接口改成interface BaseRepository<T,ID> extendsJpaRepository<T,ID>
@Autowired
private BaseRepository<User,Integer> baseRepository进行curd操作报错
java.lang.IllegalStateException: Failed to load ApplicationContext
at 。。。。。。。。。。
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'baseRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class java.lang.Object
然后有人提议在repsitory上加
@NotBeanRepository
但是还是报错不难想的,spring在加载的时候,扫描类(或接口),组装bean,第二种在扫描到<spanstyle="color:#222222;font-family:'HelveticaNeue',Helvetica,Arial,sans-serif;line-height:22.1000003814697px;">BaseRepository时,不知道如何组装的,是个泛型,你是在将其注入到别的bean中才指定泛型参数,依赖注入是将对象自动注入到依赖的对象里面去,现在没bean能注入。
<divclass='ref'>
@NoRepositoryBeanpublicinterfaceBaseRepository<T>extendsJpaRepository<T,String>,QuerydslPredicateExecutor<T>{}
publicabstractclassBaseService<T>{protectedfinalstaticLoggerlog=LoggerFactory.getLogger(CustomerService.class);@Lazy@AutowiredprotectedBaseRepository<T>repository;
}
帅哥,这样定义应该能解决你的具体问题吧!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。