前言
starter
的使用在springboot
项目中可以说是非常常见,可能有些朋友在使用springboot
项目的时候只是在网络上找了一篇如何创建一个springboot,如何又和mybatis
或mybatis-plus
集成,然后又引入缓存机制redis
,消息队列rabbitmq
等等,感觉很好用,只需要pom文件中引入相应的依赖就可以了,其他的都不需要管,确实是这样,可能在很长一段时间都在以这样的方式写项目,但久而久之,你可能会在某一次项目中遇到这样一种情况,让你自己写一个工具包可以在另一个环境中集成,这其实很简单,大家都会写这样的工具包。那工具包要求使用springboot
,数据库操作使用mybatis-plus
,这种情况下,是否有办法来解决呢。我们都知道一个完整的springboot
+mybatis-plus
的项目都是事先约定好需要扫描的文件以及mybatis-plus
需要扫描的xml路径的,我自己搞了一个springboot
+mybatis-plus
的项目要提供给另一个同样使用springboot框的使用,别人的包路径和我的基本可以确定是不一样的,人家确定了包的扫描,那也只是针对他的项目,我的项目不是那么扫描的,那不就没办法扫描到我的service,mapper了嘛,那别人调用我的项目能使用嘛,显然是不能使用的,情况严重可能连别人的项目都启动不了了。难道没办法解决这种问题了吗,当然不是啦,如果不能处理这种情况,那我们是怎么将mybatis-plus
整合到springboot
的呢,其实就是在pom
文件里边引入mybatis-plus-boot-starter
的依赖包就可以了。
一、简单介绍一下mybatis-plus
被成功装载的过程
mybatis-plus
能被spring
管理起来主要是项目启动类的联合注解@SpringBootApplication
有一个自动装配的注解@EnableAutoConfiguration
,只要有这个注解项目在启动的时候就会在引入的jar
中找是否存在spring.factories
的配置文件,如果找到此配置文件,将会根据此配置文件找到对应的配置类,处理jar
内部需要提取的配置信息以及将需要加载到的component
交给spring
管理- 下边是
spring.factories
和对应的配置信息
spring.factories
配置文件指定的都是mybatis-plus
独有的配置,里边对应的配置类将会处理所有需要加载的信息,所以我们自己创建的starter
也需要按照这样的步骤来创建- 下边是
MybatisPlusAutoConfiguration.class
- 要成功被主程序加载到,