From 2ab96a1113b10b585d533439d768dc776d22a675 Mon Sep 17 00:00:00 2001 From: xiangwbs Date: Sat, 17 Mar 2018 23:19:02 +0800 Subject: [PATCH] merge --- boot-service/pom.xml | 5 ++ .../entity/model/DruidDataSourceModel.java | 32 +++++++++++ .../src/main/resources/druid.properties | 29 ++++++++++ boot-web/pom.xml | 1 + .../com/xwbing/configuration/DruidConfig.java | 54 +++++++++++++++++++ .../xwbing/configuration/ServletConfig.java | 31 ----------- .../configuration/ServletFilterConfig.java | 53 ++++++++++++++++++ .../com/xwbing/handler/LoginInterceptor.java | 2 +- boot-web/src/main/resources/application.yml | 2 +- pom.xml | 6 +++ 10 files changed, 182 insertions(+), 33 deletions(-) create mode 100644 boot-service/src/main/java/com/xwbing/domain/entity/model/DruidDataSourceModel.java create mode 100644 boot-service/src/main/resources/druid.properties create mode 100644 boot-web/src/main/java/com/xwbing/configuration/DruidConfig.java delete mode 100644 boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java create mode 100644 boot-web/src/main/java/com/xwbing/configuration/ServletFilterConfig.java diff --git a/boot-service/pom.xml b/boot-service/pom.xml index b9c765f..a5a4a79 100644 --- a/boot-service/pom.xml +++ b/boot-service/pom.xml @@ -39,6 +39,11 @@ mysql-connector-java runtime + + com.alibaba + druid + 1.0.20 + org.projectlombok diff --git a/boot-service/src/main/java/com/xwbing/domain/entity/model/DruidDataSourceModel.java b/boot-service/src/main/java/com/xwbing/domain/entity/model/DruidDataSourceModel.java new file mode 100644 index 0000000..fa19d4e --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/domain/entity/model/DruidDataSourceModel.java @@ -0,0 +1,32 @@ +package com.xwbing.domain.entity.model; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; + +@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; + private String validationQuery; + private boolean testWhileIdle; + private boolean testOnBorrow; + private boolean testOnReturn; + private boolean poolPreparedStatements; + private int maxPoolPreparedStatementPerConnectionSize; + private String filters; + private String connectionProperties; + private boolean useGlobalDataSourceStat; +} diff --git a/boot-service/src/main/resources/druid.properties b/boot-service/src/main/resources/druid.properties new file mode 100644 index 0000000..c0b6996 --- /dev/null +++ b/boot-service/src/main/resources/druid.properties @@ -0,0 +1,29 @@ +# 数据库基本信息配置 +jdbc.driver=com.mysql.jdbc.Driver +jdbc.url=jdbc:mysql://127.0.0.1:3306/springboot2?useUnicode=true&characterEncoding=utf8 +jdbc.username=root +jdbc.password= +# 初始化大小,最小,最大 +jdbc.initSize=1 +jdbc.minIdle=3 +jdbc.maxActive=20 +# 获取连接最大等待时间 +jdbc.maxWait=60000 +# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 +jdbc.timeBetweenEvictionRunsMillis=60000 +# 配置一个连接在池中最小生存的时间,单位是毫秒 +jdbc.minEvictableIdleTimeMillis=30000 +# 连接性能检测(用来检测连接是否有效的sql,为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用) +jdbc.validationQuery=SELECT 'x' +jdbc.testWhileIdle=true +jdbc.testOnBorrow=false +jdbc.testOnReturn=false +# 打开PSCache,并且指定每个连接上PSCache的大小 ,mysql建议false +jdbc.poolPreparedStatements=false +jdbc.maxPoolPreparedStatementPerConnectionSize=20 +# 配置监控统计拦截的filters +jdbc.filters=stat,wall,slf4j +# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 +jdbc.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 +# 合并多个DruidDataSource的监控数据 +#jdbc.useGlobalDataSourceStat=true \ No newline at end of file diff --git a/boot-web/pom.xml b/boot-web/pom.xml index 86ce348..64302fc 100644 --- a/boot-web/pom.xml +++ b/boot-web/pom.xml @@ -81,6 +81,7 @@ commons-fileupload ${fileUpLoad.version} + boot-web diff --git a/boot-web/src/main/java/com/xwbing/configuration/DruidConfig.java b/boot-web/src/main/java/com/xwbing/configuration/DruidConfig.java new file mode 100644 index 0000000..95b7a4f --- /dev/null +++ b/boot-web/src/main/java/com/xwbing/configuration/DruidConfig.java @@ -0,0 +1,54 @@ +package com.xwbing.configuration; + +import com.alibaba.druid.pool.DruidDataSource; +import com.xwbing.domain.entity.model.DruidDataSourceModel; +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; + +import javax.annotation.Resource; +import java.sql.SQLException; + +/** + * 说明: 德鲁伊监控:druid/index.html + * 项目名称: boot-module-demo + * 创建时间: 2017/5/10 16:36 + * 作者: xiangwb + */ +@Configuration +@EnableConfigurationProperties(DruidDataSourceModel.class) +public class DruidConfig { + @Resource + private DruidDataSourceModel druidDataSourceModel; + + @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) { + e.printStackTrace(); + } + return dataSource; + } +} diff --git a/boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java b/boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java deleted file mode 100644 index 451f270..0000000 --- a/boot-web/src/main/java/com/xwbing/configuration/ServletConfig.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.xwbing.configuration; - -import com.xwbing.util.captcha.CaptchaServlet; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * 说明: 统一的servlet配置 - * 项目名称: boot-module-demo - * 创建时间: 2017/5/10 16:36 - * 作者: xiangwb - */ -@Configuration -public class ServletConfig { - private final Logger logger = LoggerFactory.getLogger(ServletConfig.class); - - @Bean - public ServletRegistrationBean captchaServletRegistrationBean() { - logger.info("注册验证码servlet ======================= "); - CaptchaServlet captchaServlet = new CaptchaServlet(); - ServletRegistrationBean registration = new ServletRegistrationBean(captchaServlet); - registration.setEnabled(true); - registration.addUrlMappings("/servlet/captcha"); - return registration; - } - /********************************************/ - -} diff --git a/boot-web/src/main/java/com/xwbing/configuration/ServletFilterConfig.java b/boot-web/src/main/java/com/xwbing/configuration/ServletFilterConfig.java new file mode 100644 index 0000000..72510dd --- /dev/null +++ b/boot-web/src/main/java/com/xwbing/configuration/ServletFilterConfig.java @@ -0,0 +1,53 @@ +package com.xwbing.configuration; + +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import com.xwbing.util.captcha.CaptchaServlet; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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; + +/** + * 说明: 统一的servlet/filter配置 + * 项目名称: boot-module-demo + * 创建时间: 2017/5/10 16:36 + * 作者: xiangwb + */ +@Configuration +public class ServletFilterConfig { + private final Logger logger = LoggerFactory.getLogger(ServletFilterConfig.class); + + @Bean + public ServletRegistrationBean captchaServlet() { + logger.info("注册验证码servlet ======================= "); + ServletRegistrationBean registration = new ServletRegistrationBean(new CaptchaServlet()); + registration.addUrlMappings("/captcha"); + return registration; + } + + @Bean + public ServletRegistrationBean druidServlet() { + logger.info("注册druidServlet ======================= "); + ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet()); + registration.addUrlMappings("/druid/*"); + //添加初始化参数:initParams +// registration.addInitParameter("allow", "127.0.0.1");//IP白名单(没有配置或者为空,则允许所有访问) +// registration.addInitParameter("deny", "192.168.31.234");//IP黑名单(存在共同时,deny优先于allow) + registration.addInitParameter("loginUsername", "admin");//用户名 + registration.addInitParameter("loginPassword", "123456");//密码 + registration.addInitParameter("resetEnable", "false");//禁用HTML页面上的“Reset All”功能 + return registration; + } + /*******************************************************/ + + @Bean + public FilterRegistrationBean webStatFilter() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); + filterRegistrationBean.addUrlPatterns("/*"); + filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); + return filterRegistrationBean; + } +} diff --git a/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java b/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java index 98621e6..54ea300 100644 --- a/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java +++ b/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java @@ -31,7 +31,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter { //映射swagger文档 set.add("/doc"); //验证码 - set.add("/servlet/captcha"); + set.add("/captcha"); //swagger set.add("/v2/api-docs"); set.add("/swagger-resources"); diff --git a/boot-web/src/main/resources/application.yml b/boot-web/src/main/resources/application.yml index 6e48775..1fd8da9 100644 --- a/boot-web/src/main/resources/application.yml +++ b/boot-web/src/main/resources/application.yml @@ -12,7 +12,7 @@ spring: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/springboot2?useUnicode=true&characterEncoding=utf8 username: root - password: xwbing + password: #jpa jpa: database: mysql diff --git a/pom.xml b/pom.xml index 061641b..29275aa 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,12 @@ org.springframework spring-web + + + org.springframework.boot + spring-boot-configuration-processor + true + org.springframework.boot