首页 技术 正文
技术 2022年11月9日
0 收藏 711 点赞 4,037 浏览 8184 个字

写在前面

  因为在用到spring boot + mybatis的项目时候,经常发生访问接口卡,服务器项目用了几天就很卡的甚至不能访问的情况,而我们的项目和数据库都是好了,考虑到可能是数据库连接的问题,所以我打算引入其他的数据池,引入数据池的时候找来找去,比较了当前两个最火的数据池,druid和HikariCP,比来比去选了阿里的druid,虽然spring boot默认不支持druid,而是支持HikariCP,而且HikariCP的性能更好,但是阿里功能多,界面友好方便,性价比更高

1 .maven配置

<dependency>  <groupId>com.alibaba</groupId>  <artifactId>druid</artifactId>  <version>1.0.31</version></dependency><dependency>  <groupId>org.mybatis.spring.boot</groupId>  <artifactId>mybatis-spring-boot-starter</artifactId>  <version>1.3.0</version></dependency><dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>6.0.6</version></dependency><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  <version>1.5.4.RELEASE</version></dependency>

2.在application.yml中加入mybatis的配置,mysql配置

###datasourcespring.datasource.url = jdbc:mysql://localhost:3306/eeee?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNullspring.datasource.username = rootspring.datasource.password = 123spring.datasource.driverClassName =com.mysql.jdbc.Driverspring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.initialSize=1spring.datasource.minIdle=3spring.datasource.maxActive=20spring.datasource.maxWait=60000spring.datasource.timeBetweenEvictionRunsMillis=60000spring.datasource.minEvictableIdleTimeMillis=30000spring.datasource.validationQuery=select 'x'spring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=falsespring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20spring.datasource.filters=stat,wall,slf4jspring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000spring.datasource.useGlobalDataSourceStat=true###mybatismybatis.mapper-locations=classpath:mapper/com/jiuying/small/*/*Mapper.xmlmybatis.config-location=classpath:config/sqlMapConfig.xml

3 druid 的配置文件

package com.tools.config;import java.sql.SQLException;import javax.sql.DataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.context.properties.ConfigurationProperties;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 com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;/** * @author * * druid 数据连接池配置 */@Configuration@SuppressWarnings({ "rawtypes", "unchecked" })public class DruidConfiguration {    private static final Logger logger = LoggerFactory.getLogger(DruidConfiguration.class);    private static final String DB_PREFIX = "spring.datasource";    @Bean    public ServletRegistrationBean druidServlet() {        logger.info("init Druid Servlet Configuration ");        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),                "/druid/*");        // IP白名单        servletRegistrationBean.addInitParameter("allow", "192.168.2.25,127.0.0.1");        // IP黑名单(共同存在时,deny优先于allow)        servletRegistrationBean.addInitParameter("deny", "192.168.1.100");        // 控制台管理用户        servletRegistrationBean.addInitParameter("loginUsername", "admin");        servletRegistrationBean.addInitParameter("loginPassword", "9527");        // 是否能够重置数据 禁用HTML页面上的“Reset All”功能        servletRegistrationBean.addInitParameter("resetEnable", "false");        return servletRegistrationBean;    }    @Bean    public FilterRegistrationBean filterRegistrationBean() {        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());        filterRegistrationBean.addUrlPatterns("/*");        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");        return filterRegistrationBean;    }    // 解决 spring.datasource.filters=stat,wall,log4j 无法正常注册进去    @ConfigurationProperties(prefix = DB_PREFIX)    class IDataSourceProperties {        private String url;        private String username;        private String password;        private String driverClassName;        private int initialSize;        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;        @Bean // 声明其为Bean实例        @Primary // 在同样的DataSource中,首先使用被标注的DataSource        public DataSource dataSource() {            DruidDataSource datasource = new DruidDataSource();            datasource.setUrl(url);            datasource.setUsername(username);            datasource.setPassword(password);            datasource.setDriverClassName(driverClassName);            // configuration            datasource.setInitialSize(initialSize);            datasource.setMinIdle(minIdle);            datasource.setMaxActive(maxActive);            datasource.setMaxWait(maxWait);            datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);            datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);            datasource.setValidationQuery(validationQuery);            datasource.setTestWhileIdle(testWhileIdle);            datasource.setTestOnBorrow(testOnBorrow);            datasource.setTestOnReturn(testOnReturn);            datasource.setPoolPreparedStatements(poolPreparedStatements);            datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);            try {                datasource.setFilters(filters);            } catch (SQLException e) {                System.err.println("druid configuration initialization filter: " + e);            }            datasource.setConnectionProperties(connectionProperties);            return datasource;        }        public String getUrl() {            return url;        }        public void setUrl(String url) {            this.url = url;        }        public String getUsername() {            return username;        }        public void setUsername(String username) {            this.username = username;        }        public String getPassword() {            return password;        }        public void setPassword(String password) {            this.password = password;        }        public String getDriverClassName() {            return driverClassName;        }        public void setDriverClassName(String driverClassName) {            this.driverClassName = driverClassName;        }        public int getInitialSize() {            return initialSize;        }        public void setInitialSize(int initialSize) {            this.initialSize = initialSize;        }        public int getMinIdle() {            return minIdle;        }        public void setMinIdle(int minIdle) {            this.minIdle = minIdle;        }        public int getMaxActive() {            return maxActive;        }        public void setMaxActive(int maxActive) {            this.maxActive = maxActive;        }        public int getMaxWait() {            return maxWait;        }        public void setMaxWait(int maxWait) {            this.maxWait = maxWait;        }        public int getTimeBetweenEvictionRunsMillis() {            return timeBetweenEvictionRunsMillis;        }        public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {            this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;        }        public int getMinEvictableIdleTimeMillis() {            return minEvictableIdleTimeMillis;        }        public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {            this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;        }        public String getValidationQuery() {            return validationQuery;        }        public void setValidationQuery(String validationQuery) {            this.validationQuery = validationQuery;        }        public boolean isTestWhileIdle() {            return testWhileIdle;        }        public void setTestWhileIdle(boolean testWhileIdle) {            this.testWhileIdle = testWhileIdle;        }        public boolean isTestOnBorrow() {            return testOnBorrow;        }        public void setTestOnBorrow(boolean testOnBorrow) {            this.testOnBorrow = testOnBorrow;        }        public boolean isTestOnReturn() {            return testOnReturn;        }        public void setTestOnReturn(boolean testOnReturn) {            this.testOnReturn = testOnReturn;        }        public boolean isPoolPreparedStatements() {            return poolPreparedStatements;        }        public void setPoolPreparedStatements(boolean poolPreparedStatements) {            this.poolPreparedStatements = poolPreparedStatements;        }        public int getMaxPoolPreparedStatementPerConnectionSize() {            return maxPoolPreparedStatementPerConnectionSize;        }        public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {            this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;        }        public String getFilters() {            return filters;        }        public void setFilters(String filters) {            this.filters = filters;        }        public String getConnectionProperties() {            return connectionProperties;        }        public void setConnectionProperties(String connectionProperties) {            this.connectionProperties = connectionProperties;        }    }}

4.然后我们启动项目,访问localhost:8080/druid,输入admin ,9527(配置文件里面写的用户名和密码),就可以看得到我们的监控界面了

spring boot 集成 druid

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295