开发者社区> 问答> 正文

spring4和通用mapper的使用?报错

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'itemParamItemService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected com.github.abel533.mapper.Mapper com.taotao.manage.service.BaseService.mapper; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.github.abel533.mapper.Mapper] 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.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected com.github.abel533.mapper.Mapper com.taotao.manage.service.BaseService.mapper; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.github.abel533.mapper.Mapper] 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:558)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    ... 22 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.github.abel533.mapper.Mapper] 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:1308)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:530)
    ... 24 more

持久层使用通用mapper,service层,为了简化crud,抽取了baseservice,定义了

protect Mapper <T> mapper,当书写的service继承了baseservice的时候,通过自动注入注解注入自己定义的mapper,为什么总是报错,不能注入?

展开
收起
爱吃鱼的程序员 2020-06-08 17:30:52 498 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    有人遇到过吗?可以帮忙解决下吗

    把spring的配置文件发来看一下:

    要在spring4中配置mybatismapper:

    <spanstyle="color:#FF0000"><!--配置mybatis通用mapper-->
      <beanclass="tk.mybatis.spring.mapper.MapperScannerConfigurer">
        <propertyname="basePackage"value="com..mapper"/>
        <propertyname="properties">
          <value>
            mappers=tk.mybatis.mapper.common.Mapper
          </value>
        </property>
      </bean>

    790916938你好,你有时间吗?可以加下我的qq帮我看下吗?你好,这个配置文件,我贴上来了,github.abel533是在mybatis配置文件中配置的

    <bean
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
          <propertyname="systemPropertiesModeName"value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
          <propertyname="ignoreResourceNotFound"value="true"/>
          <propertyname="locations">
             <list>
                <value>classpath:jdbc.properties</value>
                <value>classpath:env.properties</value>
             </list>
          </property>
       </bean>
       <context:component-scanbase-package="com.taotao.manage.service"/>
       <beanid="dataSource"class="com.jolbox.bonecp.BoneCPDataSource"
          destroy-method="close">
          <propertyname="driverClass"value="${jdbc.driver}"/>
          <propertyname="jdbcUrl"value="${jdbc.url}"/>
          <propertyname="username"value="${jdbc.username}"/>
          <propertyname="password"value="${jdbc.password}"/>
          <propertyname="idleConnectionTestPeriod"value="60"/>
          <propertyname="idleMaxAge"value="30"/>
          <propertyname="maxConnectionsPerPartition"value="150"/>
          <propertyname="minConnectionsPerPartition"value="5"/>
       </bean>

    持久层配置文件

    configuration>
    <settings>
       <settingname="mapUnderscoreToCamelCase"value="true"/>
    </settings>
    <plugins>
       <plugininterceptor="com.github.pagehelper.PageHelper">
           <propertyname="dialect"value="mysql"/>
           <propertyname="rowBoundsWithCount"value="true"/>
       </plugin>
     <plugininterceptor="com.github.abel533.mapperhelper.MapperInterceptor">
       <propertyname="IDENTITY"value="MYSQL"/>
       <propertyname="mappers"value="com.github.abel533.mapper.Mapper"/>
     </plugin>
    </plugins>
    </configuration>

    持久层配置文件,上面的是mybatis的配置文件

    <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
          <propertyname="dataSource"ref="dataSource"/>
          <propertyname="configLocation"value="classpath:mybatis/mybatis-config.xml"/>
            <propertyname="mapperLocations"value="classpath:mybatis/mappers/
    /*.xml"/>
          <propertyname="typeAliasesPackage"value="com.taotao.manage.pojo"/>
       </bean>
        <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
          <propertyname="basePackage"value="com.taotao.manage.mapper"></property>
       </bean>

    把 

        <beanclass="<spanstyle="color:#FF0000">org.mybatis.spring.mapper.MapperScannerConfigurer">
          <propertyname="basePackage"value="com.taotao.manage.mapper"></property>
       </bean>

    改为

    <beanclass="<spanstyle="color:#FF0000">tk.mybatis.spring.mapper.MapperScannerConfigurer">
        <propertyname="basePackage"value="com.**.mapper"/>
        <spanstyle="color:#FF0000"><propertyname="properties">
          <value>
            mappers=tk.mybatis.mapper.common.Mapper
          </value>
        </property>
      </bean>

     

    红色的地方都改过来。

    这个是哪个包下的?我点不进去,貌似没引入包楼主,在么在的

    我也遇到这这个问题,请问楼主怎么解决的?

    2020-06-08 17:31:03
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多