HikariDataSource Spring boot 默認數據源池
還有DruidDatasoure的配置,需要注意的是
@Bean
public JdkRegexpMethodPointcut druidStatPointcut() {
JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();
String patterns = "com.jxdinfo.hussar.*.service.*";
druidStatPointcut.setPatterns(new String[]{patterns});
return druidStatPointcut;
}
import com.alibaba.druid.filter.stat.MergeStatFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import com.ydzbinfo.hussar.config.properties.ConnectionPoolProperties;
import com.ydzbinfo.hussar.core.datasource.DruidProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
@Configuration
@EnableTransactionManagement(
order = 2
)
public class MybatisPlusConfig {
private static Map<Object, Object> targetDataSource = new HashMap();
@Autowired
DruidProperties druidProperties;
/*@Autowired
MutiDataSourceOneProperties mutiDataSourceOneProperties;
@Autowired
MutiDataSourceTwoProperties mutiDataSourceTwoProperties;
@Autowired
MutiDataSourceThreeProperties mutiDataSourceThreeProperties;
@Autowired
MutiDataSourceFourProperties mutiDataSourceFourProperties;
@Autowired
HussarProperties hussarProperties;*/
@Autowired
ConnectionPoolProperties connectionPoolProperties;
public MybatisPlusConfig() {
}
public static void setTargetDataSource(String dataSourceKey, DruidDataSource druidDataSource) {
targetDataSource.put(dataSourceKey, druidDataSource);
}
public DruidDataSource dataSourceHussar() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.getProxyFilters().remove(MergeStatFilter.class);
dataSource.getProxyFilters().add(this.mergeStatFilter());
this.druidProperties.config(dataSource);
return dataSource;
}
@Bean
public MergeStatFilter mergeStatFilter() {
MergeStatFilter statFilter = new MergeStatFilter();
statFilter.setSlowSqlMillis((long) this.connectionPoolProperties.getSlowSqlMillis());
statFilter.setLogSlowSql(this.connectionPoolProperties.isLogSlowSql());
statFilter.setMergeSql(this.connectionPoolProperties.isMergeSql());
return statFilter;
}
@Bean
@ConditionalOnProperty(
prefix = "hussar",
name = {"muti-datasource-open"},
havingValue = "false",
matchIfMissing = true
)
public DataSource singleDatasource() {
return (DataSource)this.dataSourceHussar();
}
/* @Bean
public PaginationInterceptor paginationInterceptor(DataSource dataSource) throws SQLException {
PaginationInterceptor inter = new PaginationInterceptor();
Connection connection = dataSource.getConnection();
String url = connection.getMetaData().getURL();
String driverClassName = connection.getMetaData().getDriverName();
connection.close();
return inter;
}*/
/*
@Bean
public DataScopeInterceptor dataScopeInterceptor() {
return new DataScopeInterceptor();
}
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
/* @Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}*/
}