项目使用了springboot + mybatis 框架,使用了mybatis的generator生成代码,其中xxxMapper接口不能被spring管理,需要在启动类上面加@MapperScan("*")注解。为什么其他层的注解就能识别到,但是写在mapper类上的注解就要特别声明路径呢?
感觉是mybatis框架自己要求的,MapperScan注解在org.mybatis.spring.annotation这个包下面,作用是Use this annotation to register MyBatis mapper interfaces when using Java Config.
springboot会自动扫描@SpringBootApplication所在类的同级包及下级包里的bean,你的mapper应该不在这个范围吧?
是在这个范围
因为service层你要加上 @service , contrller层你要加上@controller 这两个注解都是在springboot运行时将所在类加载进ioc容器中,所以mapper接口层你也要加载进ioc容器中,就用到了@mapperscan这个注解,扫描dao层