由于公司需要把一个基础系统做成一个jar包引入子系统中使用,所以需要配置一些多数据源得东西,在这里记录下来以供自己以后查看。
1、因为是引入外部jar包,所以spring容器中,bean的名字不能一样,必须把项目的名字作为前缀加在bean名字上
2、@MapperScan和@ComponentScan两个注解的用法是不一样的,@MapperScan是用来扫描mapper层得,@ComponentScan是用来扫描service层和一些其他配置包得,这两个用法不能搞混了。
3、@Qualifier注解是用来区分多个相匹配的bean,可以让spring注入指定名称bean。
4、尽量减少系统和外部引入jar包得耦合度
5、mapper配置文件的文件夹名字不要一样,因为创建数据源的时候会扫到mapper配置文件,如果名字一样会扫到一起,然后报方法找不到的错误。
接下来是具体使用方法:
一、外部jar包mybatis配置
如果外部jar包和子系统使用的是相同的本地仓库,则直接使用pom文件引入即可。
二、子系统
mybatis配置
需要在启动类中替换一些自动配置的class
@EnableAutoConfiguration(exclude = {MapperAutoConfiguration.class,MybatisAutoConfiguration.class})
properties配置文件(这里需要两个数据源配置,一个是外部jar包的数据源配置,一个是子系统的数据源配置,不知道为什么,扫描不到外部jar包的配置文件,如果不配置外部jar包的配置文件会报空指针异常)
这里的配置大部分都和一个项目中多数据源配置差不多,所以只要学会在一个项目中配置多数据源,其他的问题也可以迎刃而解。