数据源多环境添加
This commit is contained in:
@@ -4,16 +4,21 @@ import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.alibaba.druid.support.http.StatViewServlet;
|
||||
import com.alibaba.druid.support.http.WebStatFilter;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import com.google.common.collect.Maps;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.bind.RelaxedPropertyResolver;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
||||
import org.springframework.context.ApplicationContextException;
|
||||
import org.springframework.context.EnvironmentAware;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -24,43 +29,79 @@ import java.util.Map;
|
||||
* @version 1.0.0
|
||||
*/
|
||||
@Configuration
|
||||
public class DataSourceConfig {
|
||||
public class DataSourceConfig implements EnvironmentAware{
|
||||
|
||||
@ConfigurationProperties(prefix = "datasource.druid")
|
||||
@Bean(name="datasource",initMethod = "init",destroyMethod = "close")
|
||||
public DruidDataSource getDataSource(){
|
||||
return new DruidDataSource();
|
||||
private static final Logger log = LoggerFactory.getLogger(DataSourceConfig.class);
|
||||
|
||||
private RelaxedPropertyResolver prop;
|
||||
|
||||
private Environment environment;
|
||||
|
||||
@Override
|
||||
public void setEnvironment(Environment environment) {
|
||||
this.environment = environment;
|
||||
this.prop = new RelaxedPropertyResolver(environment,"spring.datasource.");
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager transactionManager(){
|
||||
return new DataSourceTransactionManager(getDataSource());
|
||||
/**
|
||||
* 数据库连接池配置
|
||||
* @return
|
||||
*/
|
||||
@Bean(initMethod="init",destroyMethod="close",name="dataSource")
|
||||
public DataSource dataSource(){
|
||||
log.info("数据库连接池配置中......");
|
||||
if (StringUtils.isEmpty(prop.getProperty("url"))) {
|
||||
throw new ApplicationContextException("数据库连接池url配置错误.");
|
||||
}else{
|
||||
DruidDataSource druid=new DruidDataSource();
|
||||
druid.setUrl(prop.getProperty("url"));
|
||||
druid.setUsername(prop.getProperty("username"));
|
||||
druid.setPassword(prop.getProperty("password"));
|
||||
druid.setDriverClassName(prop.getProperty("driverClassName"));
|
||||
druid.setInitialSize(Integer.valueOf(prop.getProperty("druid.initialSize")));
|
||||
druid.setMinIdle(Integer.valueOf(prop.getProperty("druid.minIdle")));
|
||||
druid.setMaxActive(Integer.valueOf(prop.getProperty("druid.maxActive")));
|
||||
druid.setMaxWait(Integer.valueOf(prop.getProperty("druid.maxWait")));
|
||||
druid.setTimeBetweenConnectErrorMillis(Long.valueOf(prop.getProperty("druid.timeBetweenEvictionRunsMillis")));
|
||||
druid.setMinEvictableIdleTimeMillis(Long.valueOf(prop.getProperty("druid.minEvictableIdleTimeMillis")));
|
||||
druid.setValidationQuery(prop.getProperty("druid.validationQuery"));
|
||||
druid.setTestWhileIdle(Boolean.parseBoolean(prop.getProperty("druid.testWhileIdle")));
|
||||
druid.setTestOnBorrow(Boolean.parseBoolean(prop.getProperty("druid.testOnBorrow")));
|
||||
druid.setTestOnReturn(Boolean.parseBoolean(prop.getProperty("druid.testOnReturn")));
|
||||
druid.setConnectionProperties(prop.getProperty("druid.connectionProperties"));
|
||||
try {
|
||||
druid.setFilters(prop.getProperty("druid.filter"));
|
||||
} catch (SQLException e) {
|
||||
log.error("druid数据库连接池初始化异常");
|
||||
}
|
||||
return druid;
|
||||
}
|
||||
}
|
||||
|
||||
// 指定环境下dev 开启监控
|
||||
/**
|
||||
* 静态资源过滤
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
@Profile("dev")
|
||||
public FilterRegistrationBean druidFilter() {
|
||||
FilterRegistrationBean registration = new FilterRegistrationBean();
|
||||
registration.setFilter(new WebStatFilter());
|
||||
Map<String, String> intParams = new HashMap<>();
|
||||
intParams.put("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
|
||||
registration.setName("DruidWebStatFilter");
|
||||
registration.setUrlPatterns(Lists.newArrayList("/*"));
|
||||
registration.setInitParameters(intParams);
|
||||
return registration;
|
||||
public FilterRegistrationBean filterRegistrationBean() {
|
||||
FilterRegistrationBean fr = new FilterRegistrationBean();
|
||||
fr.setFilter(new WebStatFilter());
|
||||
fr.addUrlPatterns("/*");
|
||||
fr.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
|
||||
return fr;
|
||||
}
|
||||
|
||||
//数据源监控
|
||||
/**
|
||||
* 数据源监控
|
||||
*/
|
||||
@Bean
|
||||
@Profile("dev")
|
||||
public ServletRegistrationBean servletRegistrationBean() {
|
||||
ServletRegistrationBean registration = new ServletRegistrationBean();
|
||||
registration.setServlet(new StatViewServlet());
|
||||
registration.setName("druid");
|
||||
registration.setName("druidMonitor");
|
||||
registration.setUrlMappings(Lists.newArrayList("/druid/*"));
|
||||
//自定义添加初始化参数
|
||||
Map<String, String> intParams = new HashMap<>();
|
||||
Map<String, String> intParams = Maps.newHashMap();
|
||||
intParams.put("loginUsername","druid");
|
||||
intParams.put("loginPassword","druid");
|
||||
registration.setName("DruidWebStatFilter");
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
spring:
|
||||
application:
|
||||
name: boot
|
||||
|
||||
http:
|
||||
encoding:
|
||||
force: true
|
||||
@@ -15,32 +14,6 @@ spring:
|
||||
date-format: YYYY-MM-DD
|
||||
joda-date-time-format: YYYY-MM-DD HH:mm:ss
|
||||
|
||||
datasource:
|
||||
druid:
|
||||
url: jdbc:mysql://127.0.0.1:3306/wifi2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&createDatabaseIfNotExist=true
|
||||
username: eop
|
||||
password: eop@eop
|
||||
filters: stat,slf4j
|
||||
initialSize: 10
|
||||
maxActive: 100
|
||||
maxWait: 60000
|
||||
minIdle: 5
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
validationQuery: SELECT 'x'
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
poolPreparedStatements: true
|
||||
maxPoolPreparedStatementPerConnectionSize: 20
|
||||
|
||||
server:
|
||||
port: 8082
|
||||
session:
|
||||
timeout: 30
|
||||
|
||||
|
||||
|
||||
mybatis:
|
||||
mapper-locations: classpath:mapper/*.xml
|
||||
type-aliases-package: com.xwolf.boot.entity
|
||||
@@ -49,3 +22,56 @@ mybatis:
|
||||
|
||||
logging:
|
||||
config: classpath:logback.xml
|
||||
|
||||
server:
|
||||
port: 8082
|
||||
session:
|
||||
timeout: 1800
|
||||
connection-timeout: 60000
|
||||
display-name: Boot Application
|
||||
|
||||
---
|
||||
spring:
|
||||
profiles: dev
|
||||
datasource:
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: eop
|
||||
url: jdbc:mysql://127.0.0.1:3306/wifi2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&createDatabaseIfNotExist=true
|
||||
password: eop@eop
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
druid:
|
||||
filters: config
|
||||
maxActive: 50
|
||||
initialSize: 10
|
||||
maxWait: 60000
|
||||
minIdle: 1
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
validationQuery: select 'x'
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
connectionProperties: config.decrypt=false;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMBqy+oGF0DhV2jiHyilb4mowR4mgQL4FSE0+GvlstTqYanSnJXYHmAffYVNO7lsAq4KU0K3Xh9e6qtGdAevFq0CAwEAAQ==
|
||||
|
||||
---
|
||||
spring:
|
||||
profiles: test
|
||||
datasource:
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: eop
|
||||
url: jdbc:mysql://127.0.0.1:3306/wifi2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&createDatabaseIfNotExist=true
|
||||
password: eop@eop
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
druid:
|
||||
filters: config
|
||||
maxActive: 50
|
||||
initialSize: 10
|
||||
maxWait: 60000
|
||||
minIdle: 1
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
validationQuery: select 'x'
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
connectionProperties: config.decrypt=false;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMBqy+oGF0DhV2jiHyilb4mowR4mgQL4FSE0+GvlstTqYanSnJXYHmAffYVNO7lsAq4KU0K3Xh9e6qtGdAevFq0CAwEAAQ==
|
||||
Reference in New Issue
Block a user