Spring 整合mybatis 出现错误,求大神帮忙指点

猴样鬼相 2015-12-01 04:34:26
2个项目,项目A打成jar包,引入到项目B中
两个项目是可以正常运行访问的,但是把项目A打成jar包引入到项目中,启动就报以下错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping#0' defined in URL [jar:file:/D:/workSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/app-enntry-web/WEB-INF/lib/eshore-khala-core-controller-1.0.0-SNAPSHOT.jar!/conf/spring/spring-mvc-pluginmgr.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'interfaceController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.eshore.backframe.backend.service.IUserService com.eshore.appentry.InterfaceController.userService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.eshore.backframe.backend.service.IUserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.eshore.backframe.backend.service.IUserService com.eshore.appentry.InterfaceController.userService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.eshore.backframe.backend.service.IUserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
... 47 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.eshore.backframe.backend.service.IUserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:993)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:863)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:775)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489)
... 49 more


org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.eshore.backframe.backend.service.IUserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

配置文件如下:
spring-mvc.xml:
<context:component-scan base-package="com.eshore" use-default-filters="false">
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
<context:exclude-filter expression="org.springframework.stereotype.Service" type="annotation" />
<context:exclude-filter expression="com.eshore.backframe.backend.service.IUserService" type="annotation" />
</context:component-scan>

applicationContext.xml:
<context:component-scan base-package="com.eshore">
<context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation" />
<context:exclude-filter expression="com.eshore.backframe.backend.service.IUserService" type="annotation" />
</context:component-scan>

两个配置文件的beans节点下面都设置了default-autowire="byName" default-lazy-init="true"



网上找了很多类似的帖子都没解决,求各位大神指教以下,不甚感激
...全文
299 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
猴样鬼相 2015-12-03
  • 打赏
  • 举报
回复
引用 9 楼 my_God_sky 的回复:
<context:exclude-filter expression=".backframe.backend.service.IUserService" type="annotation" /> 里面有个点的
已经解决了 是因为eclipse打成jar包的时候,add directory entries 这个复选框没有勾选,导致打出来的jar包目录结构有问题 然后现在又碰到平外一个问题: 两个项目A,B 在开发项目A的时候引入了jar包C,jar包C需要添加新的配置文件,开发完了之后项目A打包成jar包D, 现在开发项目E,引入jar包D,报错,找不到jar包D中引入的jar包C的注入,把jar包C的配置文件添加到项目E中也不管用 可能文字描述不是很清楚,看下面的图就比较清晰了 -引入jar包B 项目A -引入jar包C 我称这种引入为平级引入,jar包C的配置文件放在项目A中,这样开发没有问题 项目A-引入jar包B-引入jar包C 我称这种引入为阶梯式引入,就出现问题了, 问题是jar包C的配置文件放在项目A中不管用
猴样鬼相 2015-12-02
  • 打赏
  • 举报
回复
引用 4 楼 my_God_sky 的回复:
base-packag是com.eshore。那么你下面红色的部分是应该在com.eshore下面。你红色的部分又写完整的所以就是com.eshore.com.eshore.backframe.backend.service.IUserService。你改了试试。 applicationContext.xml:这个也改了。
spring-mvc.xml:
 <context:component-scan base-package="com.eshore" use-default-filters="false">
         <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
         <context:exclude-filter expression="org.springframework.stereotype.Service" type="annotation" />
      <context:exclude-filter expression="com.eshore.backframe.backend.service.IUserService" type="annotation" />
     </context:component-scan>
 
试过了 报: Caused by: java.lang.ClassNotFoundException: backframe.backend.service.IUserService 而这个IUserService确实是有的
猴样鬼相 2015-12-02
  • 打赏
  • 举报
回复
引用 2 楼 wsbgmofo 的回复:
[quote=引用 1 楼 my_God_sky 的回复:] A包和B包的控制器名是不是有重复?
打成jar包的A包里面是没有配置文件的 只有代码[/quote] 去掉启动是没报错 但是访问方法会报空指针
_南天北落 2015-12-02
  • 打赏
  • 举报
回复
base-packag是com.eshore。那么你下面红色的部分是应该在com.eshore下面。你红色的部分又写完整的所以就是com.eshore.com.eshore.backframe.backend.service.IUserService。你改了试试。 applicationContext.xml:这个也改了。
spring-mvc.xml:
 <context:component-scan base-package="com.eshore" use-default-filters="false">
         <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
         <context:exclude-filter expression="org.springframework.stereotype.Service" type="annotation" />
      <context:exclude-filter expression="com.eshore.backframe.backend.service.IUserService" type="annotation" />
     </context:component-scan>
 
lcc54shen 2015-12-02
  • 打赏
  • 举报
回复
com.eshore.backframe.backend.service.IUserService 这个是jar包那个项目里面的么 吧Autowired 注入这些去掉试试
猴样鬼相 2015-12-02
  • 打赏
  • 举报
回复
引用 1 楼 my_God_sky 的回复:
A包和B包的控制器名是不是有重复?
打成jar包的A包里面是没有配置文件的 只有代码
_南天北落 2015-12-02
  • 打赏
  • 举报
回复
<context:exclude-filter expression=".backframe.backend.service.IUserService" type="annotation" /> 里面有个点的
猴样鬼相 2015-12-02
  • 打赏
  • 举报
回复
引用 7 楼 my_God_sky 的回复:
你是改为.backframe.backend.service.IUserService??是这样改的? 还是backframe.backend.service.IUserService这样改的? 按照红色的改。
是按照红色那样改的 改完之后如下: spring-mvc.xml: <context:component-scan base-package="com.eshore" use-default-filters="false"> <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" /> <context:exclude-filter expression="org.springframework.stereotype.Service" type="annotation" /> <context:exclude-filter expression="backframe.backend.service.IUserService" type="annotation" /> </context:component-scan> applicationContext.xml: <context:component-scan base-package="com.eshore"> <context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation" /> <context:exclude-filter expression="backframe.backend.service.IUserService" type="annotation" /> </context:component-scan>
_南天北落 2015-12-02
  • 打赏
  • 举报
回复
你是改为.backframe.backend.service.IUserService??是这样改的? 还是backframe.backend.service.IUserService这样改的? 按照红色的改。
_南天北落 2015-12-01
  • 打赏
  • 举报
回复
A包和B包的控制器名是不是有重复?

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧