From 1948c4f1949225dd2b9e53763870f7966696b47b Mon Sep 17 00:00:00 2001 From: zhouxiunai <154707516@qq.com> Date: Mon, 24 Dec 2018 10:40:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE=E3=80=82=E4=B9=8B=E5=89=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E9=85=8D=E7=BD=AE=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adminapi/config/DataSourceConfig.java | 28 ---- .../config/PrimaryDataSourceConfig.java | 55 +++++++ .../adminapi/config/PrimaryDsProperties.java | 136 ++++++++++++++++++ .../config/SecondaryDataSourceConfig.java | 18 +++ src/main/resources/application-dev.yml | 25 ++-- 5 files changed, 221 insertions(+), 41 deletions(-) delete mode 100644 src/main/java/com/gzzn/omms/adminapi/config/DataSourceConfig.java create mode 100644 src/main/java/com/gzzn/omms/adminapi/config/PrimaryDataSourceConfig.java create mode 100644 src/main/java/com/gzzn/omms/adminapi/config/PrimaryDsProperties.java create mode 100644 src/main/java/com/gzzn/omms/adminapi/config/SecondaryDataSourceConfig.java diff --git a/src/main/java/com/gzzn/omms/adminapi/config/DataSourceConfig.java b/src/main/java/com/gzzn/omms/adminapi/config/DataSourceConfig.java deleted file mode 100644 index 3edeee0..0000000 --- a/src/main/java/com/gzzn/omms/adminapi/config/DataSourceConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gzzn.omms.adminapi.config; - -import javax.sql.DataSource; - -import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -@Configuration -public class DataSourceConfig { - @Bean(name = "primaryDataSource") - @Primary - @ConfigurationProperties(prefix="spring.datasource.primary") - public DataSource primaryDataSource() - { - return DataSourceBuilder.create().build(); - } - - - @Bean(name = "secondaryDataSource") - @ConfigurationProperties(prefix="spring.datasource.secondary") - public DataSource secondaryDataSource() - { - return DataSourceBuilder.create().build(); - } -} diff --git a/src/main/java/com/gzzn/omms/adminapi/config/PrimaryDataSourceConfig.java b/src/main/java/com/gzzn/omms/adminapi/config/PrimaryDataSourceConfig.java new file mode 100644 index 0000000..dae5398 --- /dev/null +++ b/src/main/java/com/gzzn/omms/adminapi/config/PrimaryDataSourceConfig.java @@ -0,0 +1,55 @@ +package com.gzzn.omms.adminapi.config; + + +import org.apache.tomcat.jdbc.pool.DataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + + + +@Configuration +@EnableConfigurationProperties(PrimaryDsProperties.class) +@ConditionalOnClass(DataSource.class) +@ConditionalOnProperty(prefix = "spring.datasource.primary", name = "url") +@AutoConfigureBefore(DataSourceAutoConfiguration.class) +public class PrimaryDataSourceConfig { + @Autowired + private PrimaryDsProperties properties; + + @Bean(name = "primaryDataSource") + @Primary + @ConfigurationProperties(prefix="spring.datasource.primary") + public DataSource primaryDataSource() + { + DataSource dataSource = new DataSource(); + dataSource.setUrl(properties.getUrl()); + dataSource.setUsername(properties.getUsername()); + //dataSource.setPassword(ConfigTools.decrypt(properties.getPassword()));//解密数据库密码 + dataSource.setPassword(properties.getPassword()); + if (properties.getInitialSize() > 0) { + dataSource.setInitialSize(properties.getInitialSize()); + } + if (properties.getMinIdle() > 0) { + dataSource.setMinIdle(properties.getMinIdle()); + } + if (properties.getMaxActive() > 0) { + dataSource.setMaxActive(properties.getMaxActive()); + } + dataSource.setTestOnBorrow(properties.isTestOnBorrow()); + dataSource.setDriverClassName(properties.getDriver()); + dataSource.setInitialSize(properties.getInitialSize()); + dataSource.setMaxWait(properties.getMaxWait()); + dataSource.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRunsMillis()); + dataSource.setMinEvictableIdleTimeMillis(properties.getMinEvictableIdleTimeMillis()); + + return dataSource; + } +} diff --git a/src/main/java/com/gzzn/omms/adminapi/config/PrimaryDsProperties.java b/src/main/java/com/gzzn/omms/adminapi/config/PrimaryDsProperties.java new file mode 100644 index 0000000..73dc587 --- /dev/null +++ b/src/main/java/com/gzzn/omms/adminapi/config/PrimaryDsProperties.java @@ -0,0 +1,136 @@ +package com.gzzn.omms.adminapi.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "spring.datasource.primary") +public class PrimaryDsProperties { + private String url; + + private String username; + + private String password; + + private String driver; + + private Integer initialSize; + + private Integer minIdle; + + private Integer maxPoolPreparedStatementPerConnectionSize; + + private Integer maxActive; + + private Integer maxWait; + + private Integer timeBetweenEvictionRunsMillis; + + private Integer minEvictableIdleTimeMillis; + + private boolean poolPreparedStatements; + + private boolean testOnBorrow; + + public String getUrl() { + return url; + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public String getDriver() { + return driver; + } + + public Integer getInitialSize() { + return initialSize; + } + + public Integer getMinIdle() { + return minIdle; + } + + public Integer getMaxPoolPreparedStatementPerConnectionSize() { + return maxPoolPreparedStatementPerConnectionSize; + } + + public Integer getMaxActive() { + return maxActive; + } + + public Integer getMaxWait() { + return maxWait; + } + + public Integer getTimeBetweenEvictionRunsMillis() { + return timeBetweenEvictionRunsMillis; + } + + public Integer getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public boolean isPoolPreparedStatements() { + return poolPreparedStatements; + } + + public boolean isTestOnBorrow() { + return testOnBorrow; + } + + public void setUrl(String url) { + this.url = url; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setPassword(String password) { + this.password = password; + } + + public void setDriver(String driver) { + this.driver = driver; + } + + public void setInitialSize(Integer initialSize) { + this.initialSize = initialSize; + } + + public void setMinIdle(Integer minIdle) { + this.minIdle = minIdle; + } + + public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) { + this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize; + } + + public void setMaxActive(Integer maxActive) { + this.maxActive = maxActive; + } + + public void setMaxWait(Integer maxWait) { + this.maxWait = maxWait; + } + + public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) { + this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; + } + + public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } + + public void setPoolPreparedStatements(boolean poolPreparedStatements) { + this.poolPreparedStatements = poolPreparedStatements; + } + + public void setTestOnBorrow(boolean testOnBorrow) { + this.testOnBorrow = testOnBorrow; + } +} diff --git a/src/main/java/com/gzzn/omms/adminapi/config/SecondaryDataSourceConfig.java b/src/main/java/com/gzzn/omms/adminapi/config/SecondaryDataSourceConfig.java new file mode 100644 index 0000000..740f220 --- /dev/null +++ b/src/main/java/com/gzzn/omms/adminapi/config/SecondaryDataSourceConfig.java @@ -0,0 +1,18 @@ +package com.gzzn.omms.adminapi.config; + + +import org.apache.tomcat.jdbc.pool.DataSource; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Configuration +public class SecondaryDataSourceConfig { + @Bean(name = "secondaryDataSource") + @ConfigurationProperties(prefix="spring.datasource.secondary") + public DataSource secondaryDataSource() + { + return new DataSource(); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 5f902e2..84c0d31 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -6,19 +6,18 @@ spring: username: cdairport password: 123456 url: jdbc:mysql://130.120.3.158:3306/cdairport?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true - tomcat: - max-active: 30 - test-on-borrow: true - validation-query: SELECT 1 - initial-size: 10 - min-idle: 1 - max-wait: 60000 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 300000 - test-while-idle: true - test-on-return: true - pool-prepared-statements: false - max-pool-prepared-statement-per-connection-size: 20 + max-active: 30 + test-on-borrow: true + validation-query: SELECT 1 + initialSize: 5 + min-idle: 1 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + test-while-idle: true + test-on-return: true + pool-prepared-statements: false + max-pool-prepared-statement-per-connection-size: 20 secondary: username: ommsxc password: ommsxc