工程环境是spring3+mybatis,是maven工程。目前的情况是,我有1个主工程,且称作为A工程,另外我抽了一个小工程出来,称之为B工程,现在我需要在A工程调用B工程的方法,我再A工程的类里面调用了B中的某个BO类的方法,在B工程的BO类里面注入dao,结果死活这个dao注入不了。另外,由于是maven工程,我是把B工程打成jar,然后再A中的pom中引入的这个jar。求大神指点一二,到底是咋回事???是mybatis的配置有误?还是其他原因呢??spring的核心文件也配置了相关扫描,注解,以及mybatis的扫描。
[code="java"]Caused by:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.dsp.bg.percore.biz.dao.PermissionMapper] 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:924)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)[/code]
记得 扫描的时候 classpath*: 这样写
才能扫描jar里面的类
似乎跟mybatis,maven什么的都没关系,只是单纯的注入问题,你写实现类了吗?
配置文件贴出来看下吧。
com.dsp.bg.percore.biz.dao.PermissionMapper是个dao接口吗?如果是,那么实现类上是否标注了@Component或者@Repository注解?
个人认为,像这种问题应该是某个字母写错了,好好检查下。
NoSuchBeanDefinitionException,应该是在获取spring的bean时候出现问题。
spring把 中的id作为key,你这个应该是getBean("这里名字写错了")。
或者说定义的属性名字和标签中的id对不上。
少写了注解
在起A工程的时候,spring的context中是否加载了B的spring文件,检查下目录
可能你的配置搞错了 是不是名字什么出错了,好好检查下看看