From bd3f19162ad135f458cf0c2cc41023f232cc045c Mon Sep 17 00:00:00 2001 From: xiangwbs Date: Thu, 31 May 2018 23:07:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E5=90=88=E5=A4=9A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=EF=BC=88=E5=BE=85=E5=AE=8C=E5=96=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boot-service/pom.xml | 43 +++++++-- .../datasource/JpaDataSourceConfig.java | 27 ++++++ .../datasource/MybatisDataSourceConfig.java | 48 ++++++++++ .../xwbing/druid/DruidDataSourceConfig.java | 84 ----------------- .../xwbing/druid/DruidDataSourceModel.java | 83 ---------------- .../src/main/resources/druid.properties | 94 +++++++++++++++---- .../src/main/java/com/xwbing/Application.java | 2 + boot-web/src/main/resources/application.yml | 4 + pom.xml | 2 +- 9 files changed, 190 insertions(+), 197 deletions(-) create mode 100644 boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java create mode 100644 boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java delete mode 100644 boot-service/src/main/java/com/xwbing/druid/DruidDataSourceConfig.java delete mode 100644 boot-service/src/main/java/com/xwbing/druid/DruidDataSourceModel.java diff --git a/boot-service/pom.xml b/boot-service/pom.xml index 3db342c..5e074a8 100644 --- a/boot-service/pom.xml +++ b/boot-service/pom.xml @@ -33,7 +33,17 @@ spring-boot-starter-mail - + + com.alibaba + druid-spring-boot-starter + ${druid-version} + + + mysql + mysql-connector-java + runtime + + org.springframework.boot spring-boot-starter-data-jpa @@ -43,15 +53,15 @@ - - com.alibaba - druid - ${druid-version} + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.0 - - mysql - mysql-connector-java - runtime + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.1.2 @@ -129,4 +139,19 @@ spring-boot-starter-amqp + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.2 + + ${basedir}/src/main/resources/generator/generatorConfig.xml + true + true + + + + \ No newline at end of file diff --git a/boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java b/boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java new file mode 100644 index 0000000..5e7bdc8 --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/datasource/JpaDataSourceConfig.java @@ -0,0 +1,27 @@ +package com.xwbing.datasource; + +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; +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; +import org.springframework.context.annotation.PropertySource; + +import javax.sql.DataSource; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2018/5/31 21:38 + * 作者: xiangwb + * 说明: + */ +@Configuration +@PropertySource("classpath:druid.properties") +public class JpaDataSourceConfig { + @Bean(name="") + @Primary + @ConfigurationProperties("db1") + public DataSource primaryDataSource() { + return DruidDataSourceBuilder.create().build(); + } +} diff --git a/boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java b/boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java new file mode 100644 index 0000000..1d35566 --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/datasource/MybatisDataSourceConfig.java @@ -0,0 +1,48 @@ +package com.xwbing.datasource; + +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.annotation.MapperScan; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import javax.sql.DataSource; + +/** + * 说明: 德鲁伊数据源配置。监控地址:datasource/index.html + * 项目名称: boot-module-demo + * 创建时间: 2017/12/10 16:36 + * 作者: xiangwb + */ +@Configuration +@MapperScan(basePackages = "", sqlSessionFactoryRef = "mybatisSqlSessionFactory") +@PropertySource("classpath:druid.properties") +public class MybatisDataSourceConfig { + private final Logger logger = LoggerFactory.getLogger(MybatisDataSourceConfig.class); + + @Bean(name = "mybatisDatasource") + @ConfigurationProperties("db2") + public DataSource dataSource() { + return DruidDataSourceBuilder.create().build(); + } + + @Bean(name = "mybatisSqlSessionFactory") + public SqlSessionFactory sqlSessionFactory() throws Exception { + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + sqlSessionFactoryBean.setDataSource(dataSource()); + sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); + return sqlSessionFactoryBean.getObject(); + } + + @Bean(name = "mybatisTransactionManager") + public DataSourceTransactionManager dataSourceTransactionManager() { + return new DataSourceTransactionManager(dataSource()); + } +} diff --git a/boot-service/src/main/java/com/xwbing/druid/DruidDataSourceConfig.java b/boot-service/src/main/java/com/xwbing/druid/DruidDataSourceConfig.java deleted file mode 100644 index 433cf3d..0000000 --- a/boot-service/src/main/java/com/xwbing/druid/DruidDataSourceConfig.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.xwbing.druid; - -import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.support.http.StatViewServlet; -import com.alibaba.druid.support.http.WebStatFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -import javax.annotation.Resource; -import java.sql.SQLException; - -/** - * 说明: 德鲁伊数据源配置。监控地址:druid/index.html - * 项目名称: boot-module-demo - * 创建时间: 2017/12/10 16:36 - * 作者: xiangwb - */ -@Configuration -@EnableConfigurationProperties(DruidDataSourceModel.class) -public class DruidDataSourceConfig { - @Resource - private DruidDataSourceModel druidDataSourceModel; - private final Logger logger = LoggerFactory.getLogger(DruidDataSourceConfig.class); - - @Bean - @Primary - public DruidDataSource dataSource() { - DruidDataSource dataSource = new DruidDataSource(); - dataSource.setUrl(druidDataSourceModel.getUrl()); - dataSource.setDriverClassName(druidDataSourceModel.getDriver()); - dataSource.setUsername(druidDataSourceModel.getUsername()); - dataSource.setPassword(druidDataSourceModel.getPassword()); - dataSource.setInitialSize(druidDataSourceModel.getInitSize()); - dataSource.setMinIdle(druidDataSourceModel.getMinIdle()); - dataSource.setMaxActive(druidDataSourceModel.getMaxActive()); - dataSource.setMaxWait(druidDataSourceModel.getMaxWait()); - dataSource.setTimeBetweenEvictionRunsMillis(druidDataSourceModel.getTimeBetweenEvictionRunsMillis()); - dataSource.setMinEvictableIdleTimeMillis(druidDataSourceModel.getMinEvictableIdleTimeMillis()); - dataSource.setValidationQuery(druidDataSourceModel.getValidationQuery()); - dataSource.setTestWhileIdle(druidDataSourceModel.isTestWhileIdle()); - dataSource.setTestOnBorrow(druidDataSourceModel.isTestOnBorrow()); - dataSource.setTestOnReturn(druidDataSourceModel.isTestOnReturn()); - dataSource.setPoolPreparedStatements(druidDataSourceModel.isPoolPreparedStatements()); - dataSource.setMaxPoolPreparedStatementPerConnectionSize(druidDataSourceModel.getMaxPoolPreparedStatementPerConnectionSize()); - dataSource.setConnectionProperties(druidDataSourceModel.getConnectionProperties()); - dataSource.setUseGlobalDataSourceStat(druidDataSourceModel.isUseGlobalDataSourceStat()); - try { - dataSource.setFilters(druidDataSourceModel.getFilters()); - } catch (SQLException e) { - logger.error("配置druid过滤器异常"); - } - return dataSource; - } - - @Bean - public ServletRegistrationBean statViewServlet() { - logger.info("注册druid监控信息显示statViewServlet ======================= "); - ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet()); - registration.addUrlMappings("/druid/*"); - //添加初始化参数:initParams -// registration.addInitParameter("allow", "127.0.0.1");//IP白名单(没有配置或者为空,则允许所有访问) -// registration.addInitParameter("deny", "172.17.21.232");//IP黑名单(存在共同时,deny优先于allow) - registration.addInitParameter("loginUsername", "admin");//用户名 - registration.addInitParameter("loginPassword", "123456");//密码 - registration.addInitParameter("resetEnable", "true");//禁用HTML页面上的"Reset All"功能 - return registration; - } - - @Bean - public FilterRegistrationBean webStatFilter() { - logger.info("注册druid监控信息采集webStatFilter ======================= "); - FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); - filterRegistrationBean.addUrlPatterns("/*"); - filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,*.jsp,/druid/*"); - filterRegistrationBean.addInitParameter("profileEnable", "true");//监控单个url调用的sql列表 - return filterRegistrationBean; - } -} diff --git a/boot-service/src/main/java/com/xwbing/druid/DruidDataSourceModel.java b/boot-service/src/main/java/com/xwbing/druid/DruidDataSourceModel.java deleted file mode 100644 index 7bc633e..0000000 --- a/boot-service/src/main/java/com/xwbing/druid/DruidDataSourceModel.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.xwbing.druid; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.PropertySource; -import org.springframework.stereotype.Component; - -/** - * 说明: 德鲁伊数据源参数模型 - * 项目名称: boot-module-demo - * 创建时间: 2017/5/10 16:36 - * 作者: xiangwb - */ -@Data -@Component -@PropertySource("classpath:druid.properties") -@ConfigurationProperties(prefix = "jdbc") -public class DruidDataSourceModel { - private String url; - private String username; - private String password; - private String driver; - /** - * 初始连接数 - */ - private int initSize; - /** - * 最小空闲 - */ - private int minIdle; - /** - * 最大连接数 - */ - private int maxActive; - /** - * 连接等待超时时间 - */ - private int maxWait; - /** - * 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - */ - private int timeBetweenEvictionRunsMillis; - /** - * 配置一个连接在池中最小生存的时间,单位是毫秒 - */ - private int minEvictableIdleTimeMillis; - /** - * 用来检测连接是否有效的sql,要求是一个查询语句 - */ - private String validationQuery; - /** - * 申请连接的时候检测 - */ - private boolean testWhileIdle; - /** - * 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 - */ - private boolean testOnBorrow; - /** - * 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能 - */ - private boolean testOnReturn; - /** - * 打开PSCache,mysql5.5以下的版本中没有PSCache功能,建议关闭掉 - */ - private boolean poolPreparedStatements; - /** - * 指定每个连接上PSCache的大小 - */ - private int maxPoolPreparedStatementPerConnectionSize; - /** - * 配置监控统计拦截的filters - */ - private String filters; - /** - * 慢SQL记录 - */ - private String connectionProperties; - /** - * 合并多个DruidDataSource的监控数据 - */ - private boolean useGlobalDataSourceStat; -} diff --git a/boot-service/src/main/resources/druid.properties b/boot-service/src/main/resources/druid.properties index bab36ca..9fa6dee 100644 --- a/boot-service/src/main/resources/druid.properties +++ b/boot-service/src/main/resources/druid.properties @@ -1,29 +1,83 @@ -# 数据库基本信息配置 -jdbc.driver=com.mysql.jdbc.Driver -jdbc.url=jdbc:mysql://127.0.0.1:3306/xwbing?useUnicode=true&characterEncoding=utf8&useSSL=false -jdbc.username=root -jdbc.password=xwbing +##jdbc配置##################################### +db1.driver-class-name=com.mysql.jdbc.Driver +db1.url=jdbc:mysql://127.0.0.1:3306/xwbing?useUnicode=true&characterEncoding=utf8&useSSL=false +db1.username=root +db1.password=xwbing +##连接池配置############################### # 初始化大小,最小,最大 -jdbc.initSize=1 -jdbc.minIdle=3 -jdbc.maxActive=20 +db1.initial-size=1 +db1.min-idle=3 +db1.max-active=20 # 获取连接最大等待时间 -jdbc.maxWait=60000 +db1.max-wait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -jdbc.timeBetweenEvictionRunsMillis=60000 +db1.time-between-eviction-runs-millis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 -jdbc.minEvictableIdleTimeMillis=30000 +db1.min-evictable-idle-time-millis=30000 # 连接性能检测(用来检测连接是否有效的sql,为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用) -jdbc.validationQuery=SELECT 'x' -jdbc.testWhileIdle=true -jdbc.testOnBorrow=false -jdbc.testOnReturn=false +db1.validation-query=SELECT 'x' +db1.test-while-idle=true +db1.test-on-borrow=false +db1.test-on-return=false # 打开PSCache,并且指定每个连接上PSCache的大小 ,mysql5.5以下的版本中没有PSCache功能,建议关闭掉 -jdbc.poolPreparedStatements=true -jdbc.maxPoolPreparedStatementPerConnectionSize=20 +db1.pool-prepared-statements=true +db1.max-pool-prepared-statement-per-connection-size=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,防止sql注入 -jdbc.filters=stat,wall,slf4j +db1.filters=stat,wall,slf4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 -jdbc.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 +db1.connect-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 -#jdbc.useGlobalDataSourceStat=true \ No newline at end of file +#datasource.useGlobalDataSourceStat=true +##WebStatFilter配置################################### +db1.web-stat-filter.enabled=false +db1.web-stat-filter.url-pattern=/* +db1.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* +#sesison统计 +db1.web-stat-filter.session-stat-enable=true +db1.web-stat-filter.session-stat-max-count=1000 +db1.web-stat-filter.principal-session-name= +db1.web-stat-filter.principal-cookie-name= +#监控单个url调用的sql列表 +db1.web-stat-filter.profile-enable=true +##StatViewServlet配置############################### +db1.stat-view-servlet.enabled=true +db1.stat-view-servlet.url-pattern=/druid/* +#禁用HTML页面上的"Reset All"功能 +db1.stat-view-servlet.reset-enable=true +db1.stat-view-servlet.login-username=admin +db1.stat-view-servlet.login-password=123456 +#IP白名单(没有配置或者为空,则允许所有访问) +db1.stat-view-servlet.allow= +#IP黑名单(存在共同时,deny优先于allow) +db1.stat-view-servlet.deny= +########################################################################################################### +##jdbc配置##################################### +db2.driver-class-name=com.mysql.jdbc.Driver +db2.url=jdbc:mysql://127.0.0.1:3306/xwbing?useUnicode=true&characterEncoding=utf8&useSSL=false +db2.username=root +db2.password=xwbing +##连接池配置############################### +# 初始化大小,最小,最大 +db2.initial-size=1 +db2.min-idle=3 +db2.max-active=20 +# 获取连接最大等待时间 +db2.max-wait=60000 +# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 +db2.time-between-eviction-runs-millis=60000 +# 配置一个连接在池中最小生存的时间,单位是毫秒 +db2.min-evictable-idle-time-millis=30000 +# 连接性能检测(用来检测连接是否有效的sql,为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用) +db2.validation-query=SELECT 'x' +db2.test-while-idle=true +druid.db2.test-on-borrow=false +db2.test-on-return=false +# 打开PSCache,并且指定每个连接上PSCache的大小 ,mysql5.5以下的版本中没有PSCache功能,建议关闭掉 +db2.pool-prepared-statements=true +db2.max-pool-prepared-statement-per-connection-size=20 +# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,防止sql注入 +db2.filters=stat,wall,slf4j +# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 +db2.connect-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 +# 合并多个DruidDataSource的监控数据 +#datasource.useGlobalDataSourceStat=true \ No newline at end of file diff --git a/boot-web/src/main/java/com/xwbing/Application.java b/boot-web/src/main/java/com/xwbing/Application.java index 711acd3..6605451 100644 --- a/boot-web/src/main/java/com/xwbing/Application.java +++ b/boot-web/src/main/java/com/xwbing/Application.java @@ -2,6 +2,7 @@ package com.xwbing; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.transaction.annotation.EnableTransactionManagement; /** * 项目名称: boot-module-demo @@ -11,6 +12,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ //@EnableRabbit @SpringBootApplication +@EnableTransactionManagement //@Configuration 定义为配置类,相当于xml文件中的 //@ComponentScan 组件扫描 //@EnableAutoConfiguration 借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器 diff --git a/boot-web/src/main/resources/application.yml b/boot-web/src/main/resources/application.yml index ac60238..c4ab006 100644 --- a/boot-web/src/main/resources/application.yml +++ b/boot-web/src/main/resources/application.yml @@ -59,6 +59,10 @@ spring: cache: channel: size: 1 +#mybatis +mybatis: + mapper-locations: + config-location: #log logging: config: classpath:log4j2.xml diff --git a/pom.xml b/pom.xml index 62b0f5b..983a825 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 1.45 2.2 1.0 - 1.1.5 + 1.1.10 3.14 4.5.1