web app启动警告:No MyBatis mapper was found in ... ,请检查您的配置

Ale*_*uya 6 spring mybatis

我的配置是:

spring-4.2.3
mybatis-3.3.0
mybatis-spring-1.2.3
Run Code Online (Sandbox Code Playgroud)

映射器看起来像:

package com.vsi.idp.map.server.mapper;
//imports...
public interface SeniorMapper extends BaseMapper<Long, Senior>
{
   @Results({...})
   @Select(...)
   public List<Senior> query(...);
}
Run Code Online (Sandbox Code Playgroud)

ServiceImpl看起来像:

package com.vsi.idp.map.server;
//imports...
@Service("querySenior")
public class SeniorQueryServiceImpl extends RemoteServiceServlet implements     SeniorQueryService
{
    @Autowired
    SeniorMapper mapper;

    @Override
    public List<Senior> query(Address address, String careType){...}
}
Run Code Online (Sandbox Code Playgroud)

applicationContext.xml看起来像:

<beans ... default-lazy-init="true">
   <!-- MyBatis Mapper Interfaces -->
   <mybatis:scan base-package="com.vsi.idp.map.server.mapper" />

   //other configurations
</beans>
Run Code Online (Sandbox Code Playgroud)

Spock单元测试如下所示,并按预期运行

@ContextConfiguration(locations = "file:war/WEB-INF/applicationContext.xml")
public class SeniorQueryServiceImplTest extends Specification{

  @Autowired
  SeniorQueryServiceImpl service

  def "query by full address"(){
     //blabla
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当启动 web 应用程序时,我收到了这个警告:

WARNING: No MyBatis mapper was found in '[com.vsi.idp.map.server.mapper]' package. Please check your configuration. 
Run Code Online (Sandbox Code Playgroud)

那么,如何解决这个问题呢?

更新它是一个 gwt Web 应用程序,完整的错误堆栈是:

INFO: Root WebApplicationContext: initialization started Nov 23, 2015 7:12:29 PM org.springframework.web.context.support.XmlWebApplicationContext prepareRefresh
INFO: Refreshing Root WebApplicationContext: startup date [Mon Nov 23 19:12:29 CST 2015]; root of context hierarchy Nov 23, 2015 7:12:29 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] Nov 23, 2015 7:12:29 PM org.mybatis.spring.mapper.ClassPathMapperScanner doScan
WARNING: No MyBatis mapper was found in '[com.vsi.idp.map.server.mapper]' package. Please check your configuration.Nov 23, 2015 7:12:30 PM org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor <init>
INFO: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
Module setup completed in 1698 ms
Nov 23, 2015 7:12:30 PM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization completed in 1557 ms
Run Code Online (Sandbox Code Playgroud)

小智 5

@MapperScan(basePackages = "com.vsi.idp.map.server.mapper")
Run Code Online (Sandbox Code Playgroud)

您可以尝试添加它!


Jia*_*Cai 0

MapperScannerConfigurer在applicationContext.xml中定义了吗?如果有,请删除它。

我的 applicationContext.xml 中有以下配置,当我删除它时,警告消失了。

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.james.reg.mapper" />
    <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
Run Code Online (Sandbox Code Playgroud)