首先在配置环境变量里写 spring: datasource: mysql: url: username: password: initialSize: 10 minIdle: 1 maxActive: 100 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 180000 validationQuery: SELECT 1 FROM DUAL
建一个类拿到上面的信息 @Data @Component @ConfigurationProperties(prefix = "spring.datasource.mysql") public class MysqlParamConfig { private String url; private Integer initialSize; private Integer maxActive; private Integer minIdle; private Integer maxWait; private String username; private String password; private String validationQuery; private Long timeBetweenEvictionRunsMillis; private Long minEvictableIdleTimeMillis; }
然后建类,加工厂,事物,还有查询sqlsession选择。 @Configuration @MapperScan(basePackages = {"//.mapper.mysql", "//.mapper.mysql", "//.project.mapper", "//.mapper.mysql"}, sqlSessionTemplateRef = "primarySqlSessionTemplate", sqlSessionFactoryRef ="primarySqlSessionFactory" ) public class MysqlDataSourceConfig { @Resource private MysqlParamConfig mysqlParamConfig;
@Bean(name = "primaryDataSource") @Primary public DataSource primaryDataSource() { DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(mysqlParamConfig.getUrl()); datasource.setInitialSize(mysqlParamConfig.getInitialSize()); datasource.setMinIdle(mysqlParamConfig.getMinIdle()); datasource.setMaxActive(mysqlParamConfig.getMaxActive()); datasource.setMaxWait(mysqlParamConfig.getMaxWait()); datasource.setUsername(mysqlParamConfig.getUsername()); datasource.setPassword(mysqlParamConfig.getPassword()); datasource.setValidationQuery(mysqlParamConfig.getValidationQuery()); datasource.setTimeBetweenEvictionRunsMillis(mysqlParamConfig.getTimeBetweenEvictionRunsMillis()); datasource.setMinEvictableIdleTimeMillis(mysqlParamConfig.getMinEvictableIdleTimeMillis()); return datasource; } @Bean(name = "primarySqlSessionFactory") @Primary public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mappers/**/*.xml")); return bean.getObject(); } @Bean(name = "primaryTransactionManager") public DataSourceTransactionManager primaryTransactionManager(@Qualifier("primaryDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "primarySqlSessionTemplate") @Primary public SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }
多个数据源,建立多个对应的类即可。