druid 多數據源配置


新建兩個數據源配置類:DruidDataSourceMasterConfigurer.java和DruidDataSourceAddressBookConfigurer.java

DruidDataSourceMasterConfigurer.java代碼如下

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
@Configuration
@MapperScan(basePackages = DruidDataSourceMasterConfigurer.PACKAGE, sqlSessionFactoryRef = "sqlSessionFactoryMaster")
@Primary
public class DruidDataSourceMasterConfigurer {

/**
* dao層的包路徑
*/
static final String PACKAGE = "com.dienphuoc.select.user.depart.dao.department_user";

/**
* Mapper文件路徑
*/
@Value("${mybatis.mapper-locations}")
private String mapperLocation;

@Value("${spring.druid.master.publicKey}")
private String publicKey;
@Value("${spring.druid.master.decrypt}")
private String decrypt;

/**
* @ConfigurationProperties(prefix = "配置文件中數據源路徑")
* @Bean(name = "配置文件中數據源名稱", initMethod = "init", destroyMethod = "close")
*/
@ConfigurationProperties(prefix = "spring.druid.master")
@Bean(name = "master", initMethod = "init", destroyMethod = "close")
public DruidDataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setProxyFilters(Lists.newArrayList(statFilter(), configFilter()));
Properties properties = new Properties();
properties.setProperty("config.decrypt", decrypt);
properties.setProperty("config.decrypt.key", publicKey);
dataSource.setConnectProperties(properties);
return dataSource;
}

@Bean("txManager")
public DataSourceTransactionManager txManager() {
return new DataSourceTransactionManager(dataSource());
}

/**
* 定義空Config類用於加密類的加載
*/
@Bean
public ConfigFilter configFilter() {
ConfigFilter configFilter = new ConfigFilter();
return configFilter;
}

/**
* 配置了要打印的sql
*/
@Bean
public Filter statFilter() {
StatFilter filter = new StatFilter();
filter.setSlowSqlMillis(2000);
filter.setLogSlowSql(true);
filter.setMergeSql(true);
return filter;
}

@Bean
public ServletRegistrationBean servletRegistrationBean() {
return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
}


/**
* @Bean(name = "Bean實例名")
* @Qualifier("數據源名稱")
*/
@Bean(name = "sqlSessionFactoryMaster")
public SqlSessionFactory sqlSessionFactoryMaster(@Qualifier("master") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources(mapperLocation));
return bean.getObject();
}
}

DruidDataSourceAddressBookConfigurer.java代碼如下

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
@Configuration
@MapperScan(basePackages = DruidDataSourceAddressBookConfigurer.PACKAGE, sqlSessionFactoryRef = "sqlSessionFactoryAddress")
public class DruidDataSourceAddressBookConfigurer {

/**
* dao層的包路徑
*/
static final String PACKAGE = "com.dienphuoc.select.user.depart.dao.address_book";

/**
* Mapper文件路徑
*/
@Value("${mybatis.mapper-locations}")
private String mapperLocation;

@Value("${spring.druid.address.publicKey}")
private String publicKey;
@Value("${spring.druid.address.decrypt}")
private String decrypt;

/**
* @ConfigurationProperties(prefix = "配置文件中數據源路徑")
* @Bean(name = "配置文件中數據源名稱", initMethod = "init", destroyMethod = "close")
*/
@ConfigurationProperties(prefix = "spring.druid.address")
@Bean(name = "address", initMethod = "init", destroyMethod = "close")
public DruidDataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setProxyFilters(Lists.newArrayList(statFilterAddress(), configFilterAddress()));
Properties properties = new Properties();
properties.setProperty("config.decrypt", decrypt);
properties.setProperty("config.decrypt.key", publicKey);
dataSource.setConnectProperties(properties);
return dataSource;
}

@Bean("txManagerAddress")
public DataSourceTransactionManager txManagerAddress() {
return new DataSourceTransactionManager(dataSource());
}

/**
* 定義空Config類用於加密類的加載
*/
@Bean
public ConfigFilter configFilterAddress() {
ConfigFilter configFilter = new ConfigFilter();
return configFilter;
}

/**
* 配置了要打印的sql
*/
@Bean
public Filter statFilterAddress() {
StatFilter filter = new StatFilter();
filter.setSlowSqlMillis(2000);
filter.setLogSlowSql(true);
filter.setMergeSql(true);
return filter;
}

@Bean
public ServletRegistrationBean servletRegistrationBeanAddress() {
return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
}


/**
* @Bean(name = "Bean實例名")
* @Qualifier("數據源名稱")
*/
@Bean(name = "sqlSessionFactoryAddress")
public SqlSessionFactory sqlSessionFactoryAddress(@Qualifier("address") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources(mapperLocation));
return bean.getObject();
}
}
application.xml配置如下
druid:
master:
url: jdbc:mysql://192.168.250.101:3306/bbb?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
username: root
password: pbbbb
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 1 #初始化大小
minIdle: 5 #最小連接數
maxActive: 20 #最大連接數
maxWait: 60000 #最大等待時間
validationQuery: select '1' #活性校驗SQL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
timeBetweenEvictionRunsMillis: 60000 #配置隔多久進行一次檢測(檢測可以關閉的空閑連接),檢測需要關閉的空閑連接,單位是毫秒
filters: stat,wall,slf4j #配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆
publicKey: publicKey
decrypt: false
address:
url: jdbc:mysql://localhost:3306/aaa?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
username: root
password: eee
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 1 #初始化大小
minIdle: 5 #最小連接數
maxActive: 20 #最大連接數
maxWait: 60000 #最大等待時間
validationQuery: select '1' #活性校驗SQL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
timeBetweenEvictionRunsMillis: 60000 #配置隔多久進行一次檢測(檢測可以關閉的空閑連接),檢測需要關閉的空閑連接,單位是毫秒
filters: stat,wall,slf4j #配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆
publicKey: publicKey
decrypt: false

配置完成,結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM