SpringBoot: ApplicationListerner 的实现不能注入 mybatis 的 mapper bean?

web 项目是 springboot+mybatis
里面有一个 listener 文件和 mapper 文件如下

listener 文件:

@Component
public class InitColorListener implements ApplicationListener {

  @Resource(name="colorMapper")
  private ColorMapper mapper;
  ...
}

mapper 文件

@Repository("colorMapper")
public interface ColorMapper {
    List<Color> findAll();
    ...
}

项目编译启动,出现错误:

2017-09-14 11:42:40.298 WARN 3560 --- [ main] o.s.boot.SpringApplication : Error handling failed (Error creating bean with name 'InitColorListener': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'colorMapper' available)
2017-09-14 11:42:40.388 ERROR 3560 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
Disconnected from the target VM, address: '127.0.0.1:50302', transport: 'socket'
A component required a bean named 'colorMapper' that could not be found.

阅读 7k
4 个回答

你可以不用这种方式来注入mapper接口,你可以通过扫包加mybatis.xml来进行sql语句查询实现,这种不方便,可以参考下下面这个
Spring Boot 集成MyBatis

配置文件呢,是可以用注解,但你的配置文件是怎么写的呢

可以自己写一个util,继承ApplicationContextAware接口,从spring容器中拿到那个bean。你可以百度springBeanUtil试试,网上有很多。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏