通过druid配置多数据源后,发现mybatis-plus.global-config配置通通失效了
不生效原因:配置多数据源后,数据源对应的SqlSessionFactoryBean是单独设置的,没有加载在properties内的config配置
解决方案:重新将配置set到SqlSessionFactoryBean中
配置引入
/** 全局自定义配置 */
@Bean(name = "globalConfig")
@ConfigurationProperties(prefix = "mybatis-plus.global-config")
public GlobalConfig globalConfig(){
return new GlobalConfig();
}
set配置
@Autowired
@Qualifier("globalConfig")
private GlobalConfig globalConfig;
@Bean(name = "tianjiSqlSessionFactory")
public SqlSessionFactory tianjiSqlSessionFactory(@Qualifier("tianji") DataSource dataSource) throws Exception {
/** 当使用myBatis-plus的时候需要使用 MybatisSqlSessionFactoryBean */
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
/**当使用多数据源时,mybatisPlus默认配置将会失效,需要单独将其注入数据源中 */
bean.setPlugins(plugins);
/** 设置全局配置 */
bean.setGlobalConfig(globalConfig);
return bean.getObject();
}
druid启动自动连接数据库方法
druid多数据源启动时,默认不会自动连接数据库的,当第一次从连接池中去获取连接的时候,就会进行初始化,因此表现为第一次请求需要先建立initial-size个连接,导致首次请求返回速度较慢,这时需要设置一个初始化方法,已解决这个问题:
@Bean(name = "tianji",initMethod = "init",destroyMethod = "close")
@ConfigurationProperties(prefix = "spring.datasource.druid.tianji")
public DataSource dataSource() {
return DruidDataSourceBuilder.create().build();
}
init方法已经内置在druid中,IDEA如有报红忽略即可