org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'approvationService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private main.java.org.beifeng.oa.dao.ApprovationRepository main.java.org.beifeng.oa.service.impl.ApprovationServiceImpl.approvationRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'approvationRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class main.java.org.beifeng.oa.entity.Approvation
1条回答 默认 最新
你知我知皆知 2024-08-03 19:28关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是由于Spring和Activiti之间的依赖关系导致的。在你的应用程序中,你可能有以下两个bean:
-
ApprovalService: 这个bean是通过@Autowired注解注入到其他bean中的。
-
ApprovalRepository: 这个bean是通过@Repository注解定义的,并且它是一个JpaRepository接口的实现类。
现在,当Tomcat尝试启动时,它会尝试创建ApprovalService对象,但是由于没有找到合适的ApprovalRepository对象,所以报错了。
解决这个问题的方法如下:
- 将ApprovalRepository移至一个单独的包或模块中,以便于Spring管理。例如,在application.properties文件中添加以下配置:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect-
在ApplicationContext.xml中删除ApprovalRepository的依赖,或者将它从依赖列表中删除。这样就可以避免CircularDependency问题了。
-
如果你使用的是Tomcat 8.0及以上版本,可以考虑将ApprovalRepository移到Spring容器外部,例如将其放在一个独立的Java类中,并使用@Bean方法来创建这个类的对象。
-
如果以上方法都无法解决问题,那么你需要检查是否有任何冲突的bean定义。确保所有bean的名称、类型、作用域等都是一致的。
如果你能提供更多的代码细节,我可以帮助你更精确地定位问题所在。
解决 无用评论 打赏 举报-