當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
【SpringBoot笔记】SpringBoot整合Druid数据连接池
生活随笔
收集整理的這篇文章主要介紹了
【SpringBoot笔记】SpringBoot整合Druid数据连接池
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
廢話少說(shuō),按SpringBoot的老套路來(lái)。
【step1】:添加依賴
<!-- 數(shù)據(jù)庫(kù)連接池 --> <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.25</version> </dependency>?
【step2】:application.yml中添加對(duì)應(yīng)配置
spring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://對(duì)應(yīng)自己的數(shù)據(jù)庫(kù)連接 username: xxxpassword: xxx ######################### Druid連接池的配置信息 ################# spring.druid.initialSize: 5 #初始化連接大小 spring.druid.minIdle: 5 #最小連接池?cái)?shù)量 spring.druid.maxActive: 20 #最大連接池?cái)?shù)量 spring.druid.maxWait: 60000 #獲取連接時(shí)最大等待時(shí)間,單位毫秒 spring.druid.timeBetweenEvictionRunsMillis: 60000 #配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒 spring.druid.minEvictableIdleTimeMillis: 300000 #配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒 spring.druid.validationQuery: SELECT 1 FROM DUAL #測(cè)試連接 spring.druid.testWhileIdle: true #申請(qǐng)連接的時(shí)候檢測(cè),建議配置為true,不影響性能,并且保證安全性 spring.druid.testOnBorrow: false #獲取連接時(shí)執(zhí)行檢測(cè),建議關(guān)閉,影響性能 spring.druid.testOnReturn: false #歸還連接時(shí)執(zhí)行檢測(cè),建議關(guān)閉,影響性能 spring.druid.poolPreparedStatements: false #是否開(kāi)啟PSCache,PSCache對(duì)支持游標(biāo)的數(shù)據(jù)庫(kù)性能提升巨大,oracle建議開(kāi)啟,mysql下建議關(guān)閉 spring.druid.maxPoolPreparedStatementPerConnectionSize: 20 #開(kāi)啟poolPreparedStatements后生效 spring.druid.filters: stat,wall,log4j #配置擴(kuò)展插件,常用的插件有=>stat:監(jiān)控統(tǒng)計(jì) log4j:日志 wall:防御sql注入 spring.druid.connectionProperties: 'druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000' #通過(guò)connectProperties屬性來(lái)打開(kāi)mergeSql功能;慢SQL記錄?
【step3】:java代碼中讀取配置,并做相關(guān)轉(zhuǎn)換(比如數(shù)據(jù)庫(kù)密碼加解密等,這里省略)
import java.sql.SQLException; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.embedded.FilterRegistrationBean; import org.springframework.boot.context.embedded.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;@Configuration public class DruidConfiguration {@Value("${spring.datasource.url}")private String url;@Value("${spring.datasource.username}")private String username;@Value("${spring.datasource.password}")private String password;@Value("${spring.datasource.driverClassName}")private String driverClassName;@Value("${spring.druid.initialSize}")private int initialSize;@Value("${spring.druid.minIdle}")private int minIdle;@Value("${spring.druid.maxActive}")private int maxActive;@Value("${spring.druid.maxWait}")private int maxWait;@Value("${spring.druid.timeBetweenEvictionRunsMillis}")private int timeBetweenEvictionRunsMillis;@Value("${spring.druid.minEvictableIdleTimeMillis}")private int minEvictableIdleTimeMillis;@Value("${spring.druid.validationQuery}")private String validationQuery;@Value("${spring.druid.testWhileIdle}")private boolean testWhileIdle;@Value("${spring.druid.testOnBorrow}")private boolean testOnBorrow;@Value("${spring.druid.testOnReturn}")private boolean testOnReturn;@Value("${spring.druid.poolPreparedStatements}")private boolean poolPreparedStatements;@Value("${spring.druid.maxPoolPreparedStatementPerConnectionSize}")private int maxPoolPreparedStatementPerConnectionSize;@Value("${spring.druid.filters}")private String filters;@Value("{spring.druid.connectionProperties}")private String connectionProperties;@Bean@Primarypublic 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) {}datasource.setConnectionProperties(connectionProperties);return datasource;}@Beanpublic ServletRegistrationBean statViewServlet(){ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");servletRegistrationBean.addInitParameter("allow","127.0.0.1"); //設(shè)置ip白名單servletRegistrationBean.addInitParameter("deny","192.168.0.19");//設(shè)置ip黑名單,優(yōu)先級(jí)高于白名單//設(shè)置控制臺(tái)管理用戶servletRegistrationBean.addInitParameter("loginUsername","root");servletRegistrationBean.addInitParameter("loginPassword","root");//是否可以重置數(shù)據(jù)servletRegistrationBean.addInitParameter("resetEnable","false");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean statFilter(){//創(chuàng)建過(guò)濾器FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());//設(shè)置過(guò)濾器過(guò)濾路徑filterRegistrationBean.addUrlPatterns("/*");//忽略過(guò)濾的形式filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;} }?
【step4】:測(cè)試
登錄成功后如下:
?
轉(zhuǎn)載于:https://www.cnblogs.com/funnyboy0128/p/9052447.html
總結(jié)
以上是生活随笔為你收集整理的【SpringBoot笔记】SpringBoot整合Druid数据连接池的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【python 3.6】调用另一个文件的
- 下一篇: 梦到自己来大姨妈预示什么