项目从Tomcat7迁移Tomcat8 问题分析 UnsatisfiedDependencyException

在将项目从Tomcat7迁移到Tomcat8时遇到启动报错,错误信息为UnsatisfiedDependencyException。分析指出,报错可能源于XML配置文件中shiroFilter的securityManager字段引用错误,进一步原因是securityManager配置的UserRealm字段引用的userInfoService出现问题。具体错误为无法找到类org.apache.tomcat.dbcp.dbcp.BasicDataSource,可能是由于Tomcat8中该类包名变更导致。解决方案是检查并更新配置文件中的类路径,以适配Tomcat8的类库。
摘要由CSDN通过智能技术生成

项目启动报错,报错信息分析:

ERROR org.springframework.web.context.ContextLoader - Context initialization failed


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilter' defined in class path resource [security/applicationContext-shiro.xml]: Cannot resolve reference to bean 'securityManager' while setting bean property 'securityManager'; 

解释:shiroFilter这个类在[security/applicationContext-shiro.xml]中的XML进行配置,但是其中的字段securityManager引用有错误。


nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityManager' defined in class path resource [security/applicationContext-shiro.xml]: Cannot resolve reference to bean 'UserRealm' while setting bean property 'realm'; 

解释:securityManager这个类在[security/applicationContext-shiro.xml]中的XML进行配置,但是其中的字段UserRealm引用有错误。


nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'UserRealm': Unsatisfied dependency expressed through field 'userInfoService';

这里报UnsatisfiedDependencyException异常,根据下面网址中解释,可以得知肯定是Mapper文件的配置位置出现了一定的问题。

https://jingyan.baidu.com/article/f7ff0bfcc2a71e2e27bb135b.html


nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class 

[org.apache.tomcat.dbcp.dbcp.BasicDataSource] for bean with name 'dataSourceAddress' defined in class path resource [datasources/applicationContext-mysql.xml];

这里的类根据路径找不到类资源,根据类路径查看发现Tomcat7存在有这个类,而Tomcat8这个类的包名修改了。



完整的报错信息:

20:03:42.003 [localhost-startStop-1] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilter' defined in class path resource [security/applicationContext-shiro.xml]: Cannot resolve reference to bean 'securityManager' while setting bean property 'securityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityManager' defined in class path resource [security/applicationContext-shiro.xml]: Cannot resolve reference to bean 'UserRealm' while setting bean property 'realm'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'UserRealm': Unsatisfied dependency expressed through field 'userInfoService'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.tomcat.dbcp.dbcp.BasicDataSource] for bean with name 'dataSourceAddress' defined in class path resource [datasources/applicationContext-mysql.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSource
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1531) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1276) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]
at org.springframework.beans.factory.support.Abst

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值