实现ApplicationRunner接口 注入dao失败的原因

环境:
springboot项目
mybatis
IDE:idea

问题

想要在springboot项目启动时 执行某个方法,并操作数据库时,dao层注入失败。

想要启动时运行某个方法,可以让这个方法实现ApplicationRunner或CommandLineRunner接口:如下
  public class WaterStartService implements ApplicationRunner{
      @Override
      public void run(ApplicationArguments args) throws Exception {
          System.out.println("start");
      }
  }
因为要操作数据库,所以要注入dao
  public class WaterStartService implements ApplicationRunner{
      @Autowired
      public IWaterLogDao waterLogDao;

      @Override
      public void run(ApplicationArguments args) throws Exception {
          System.out.println("start");
      }
  }
此时,启动项目遇到了dao注入失败的问题
  Field waterLogDao in com.sc.water.service.WaterLogService required a bean of type 'com.sc.water.dao.IWaterLogDao' that could not be found.
解决方式:一开始dao的注解是@Repository一直无法注入

把注解改为@Mapper,dao注入就没有报错了

总结

当实现ApplicationRunner接口(启动时执行某个方法),并要注入dao时,dao要把注解@Repository改为@Mapper,dao就不会注入失败了


遥望漉雪千山都过尽,隔海隔山你的背影。