需要配置 exclude = {DataSourceAutoConfiguration.class})
@SpringBootApplication(scanBasePackages = {"com.quickapp"}, exclude = {DataSourceAutoConfiguration.class})
@EnableTransactionManagement(proxyTargetClass = true)
@EnableWebMvc
@MapperScan("com.quickapp.mapper")
public class Application {
}
多数据源配置
@SpringBootApplication(scanBasePackages = {"com..quickapp"}, exclude = {DataSourceAutoConfiguration.class})
@EnableTransactionManagement(proxyTargetClass = true)
@EnableWebMvc
@MapperScan("com.xiaomi.mina.quickapp.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean(name = "datasource1")
@ConfigurationProperties(prefix = "spring.datasource")
public DruidDataSource dataSource1() {
return new DruidDataSource();
}
@Bean(name = "datasource2")
@ConfigurationProperties(prefix = "spring.datasource2")
public DruidDataSource dataSource2() {
return new DruidDataSource();
}
/**
* 动态数据源: 通过AOP在不同数据源之间动态切换
*
* @return
*/
@Primary
@Bean
public DataSource dynamicDataSource() {
DynamicDataSource dynamicDataSource = new DynamicDataSource();
// 默认数据源
dynamicDataSource.setDefaultTargetDataSource(dataSource1());
// 配置多数据源
Map<Object, Object> dsMap = new HashMap();
dsMap.put("datasource1", dataSource1());
dsMap.put("datasource2", dataSource2());
dynamicDataSource.setTargetDataSources(dsMap);
return dynamicDataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dynamicDataSource());
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setPlugins(new Interceptor[]{new RouterInterceptor()});
sqlSessionFactoryBean.setMapperLocations(resolver
.getResources("classpath:/com/quickapp/mapper/*.xml"));
return sqlSessionFactoryBean.getObject();
}