SpringBoot(九):SpringBoot使用Druid資料來源
Druid是阿里巴巴開源平臺上一個資料庫連線池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優點,同時加入了日誌監控,可以很好的監控DB池連線和SQL的執行情況,可以說是針對監控而生的DB連線池(據說是目前最好的連線池)
一、依賴
為了測試,使用jdbcTemplate
<!-- jdbcTemplate -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId >
</dependency>
<!-- druid資料庫連線池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
<!-- mysql connector -->
<dependency>
<groupId>mysql</groupId >
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
二、Druid配置
druid.properties
#資料庫設定
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/uu_core?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=true
spring.datasource .username=root
spring.datasource.password=root
#--------------------------
# 下面為連線池的補充設定,應用到上面所有資料來源中
# 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=1
spring.datasource.maxActive=50
# 配置獲取連線等待超時的時間
spring.datasource.maxWait=60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一個連線在池中最小生存的時間,單位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# 開啟PSCache,並且指定每個連線上PSCache的大小
spring.datasource.poolPreparedStatements=false
#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆
spring.datasource.filters=stat,wall,log4j
# 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合併多個DruidDataSource的監控資料
#spring.datasource.useGlobalDataSourceStat=true
三、例項化Druid Datasource
package cn.aduu.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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.PropertySource;
import javax.sql.DataSource;
/**
* @author zh
* @ClassName cn.aduu.config.DruidConfiguration
* @Description
*/
@Configuration
@PropertySource(value = "classpath:druid.properties")
public class DruidConfiguration {
@Bean(destroyMethod = "close", initMethod = "init")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
/**
* 註冊一個StatViewServlet
* @return
*/
@Bean
public ServletRegistrationBean druidStatViewServlet(){
//org.springframework.boot.context.embedded.ServletRegistrationBean提供類的進行註冊.
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
//新增初始化引數:initParams
//白名單:
servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//IP黑名單 (存在共同時,deny優先於allow) : 如果滿足deny的話提示:Sorry, you are not permitted to view this page.
servletRegistrationBean.addInitParameter("deny","192.168.1.73");
//登入檢視資訊的賬號密碼.
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","123456");
//是否能夠重置資料.
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}
/**
* 註冊一個:filterRegistrationBean
* @return
*/
@Bean
public FilterRegistrationBean druidStatFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//新增過濾規則.
filterRegistrationBean.addUrlPatterns("/*");
//新增不需要忽略的格式資訊.
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
四、監控
五、測試
@RestController
public class HelloController{
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("hello")
public List<Map<String, Object>> hello() {
List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT user,password FROM mysql.user ", new Object[]{});
return list;
}
}
訪問localhost:8080/hello
[
{
"user": "root",
"password": "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B"
},
{
"user": "root",
"password": "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B"
}
]
相關推薦
SpringBoot(九):SpringBoot使用Druid資料來源
Druid是阿里巴巴開源平臺上一個資料庫連線池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優點,同時加入了日誌監控,可以很好的監控DB池連線和SQL的執行情況,可以說是針對監控而生的DB連線池(據說是目前最好的連線池) 一、依賴 為
springboot(九):事物管理
SpringBoot整合事物管理 Springboot預設整合事物,只主要在方法上加上@Transactional即可。 多資料來源情況下事物怎麼管理事物 對於這種傳統的分散式事物管理,採用jta+atomikos 分散式事物管理。Atomikos 是一個為Java平臺提供增值服
SpringBoot(九):SpringBoot使用FastJson
阿里巴巴FastJson是一個Json處理工具包,包括“序列化”和“反序列化”兩部分,它具備如下特徵: 速度最快,測試表明,fastjson具有極快的效能,超越任其他的Java Json parser。包括自稱最快的JackJson; 功能強大,完全支援Java Bean
springboot(八):整合多資料來源
資料來源是如何劃分: 按包名(業務)和註解劃分 ;例如:com.test.learn01----使用datasource1; com.test.learn02----使用datasource2。 專案目錄結構: 配置檔案中新增兩個資料來源 建立資料來源DataSource1
微服務 SpringBoot 2.0(九):整合Mybatis
我是SQL小白,我選Mybatis —— Java面試必修 引言 在第五章我們已經整合了Thymeleaf頁面框架,第七章也整合了JdbcTemplate,那今天我們再結合資料庫整合Mybatis框架 在接下來的文章中,我會用一個開源的部落格原始碼來做講解
SpringBoot入門系列片(九):使用自定義的屬性並配置成類
前情提要 在SpringBoot中使用application.properties默認了很多配置,有時候我們也需要到該屬性配置檔案中自定義屬性值,甚至於將一系列自定義屬性合併成一個物件,而SpringBoot中也提供了這種功能的實現,那麼現在就來試試吧
springBoot(2):Properties和YAML配置文件
springboot springboot的properties和yaml配置文件 一、配置文件的生效順序,會對值進行覆蓋1. @TestPropertySource 註解2. 命令行參數3. Java系統屬性(System.getProperties())4. 操作系統環境變量5. 只有在rando
springBoot(4):日誌配置-logback
springboot 日誌配置-logback和log4j2 一、簡介支持日誌框架:Java Util Logging, Log4J2 and Logback,默認是使用logbacklogback配置方式spring boot默認會加載classpath:logback-spring.xml或者cl
springBoot(6):web開發-模板引擎jsp
spring boot 一、新建工程 註意新建的工程下沒有webapp目錄eclipse下會自動創建webapp目錄這裏我們需要自動創建一個webapp目錄並創建WEB-INF。 對ServletInitializer.java進行說明 1、這個類相當於我們以前的web.xml 2、只有3.0以上才
springBoot(7):web開發-錯誤處理
spring boot 錯誤處理 處理方式一:實現ErrorController接口原理:Spring Boot 將所有的錯誤默認映射到/error, 實現ErrorController接口代碼:package com.example.demo.controller; import org.sp
springBoot(9):web開發-CORS支持
springboot springboot web開發-cors支持 一、簡介Web 開發經常會遇到跨域問題,解決方案有:jsonp,iframe,CORS 等等1.1、CORS與JSONP相比1、JSONP只能實現GET請求,而CORS支持所有類型的HTTP請求。2、使用CORS,開發者可以使用普通
springBoot(12):集成Druid
springboot 集成druid 一、添加依賴<!--mybatis-開始--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>myba
springBoot(14):使用SQL關系型數據庫-事務處理
springboot springboot事務處理 一、事務的四個特性(ACID)原子性(Atomicity): 事務是一個原子操作,由一系列動作組成。事務的原子性確保動作要麽全部完成,要麽完全不起作用。一致性(Consistency): 一旦事務完成(不管成功還是失敗),系統必須確保它所建模的業務處
springBoot(15):集成Swagger
springboot 集成swagger 一、簡介Swagger 是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。http://swagger.io/ Springfox 的前身是swagger-springmvc,是一個開源的API doc框架,可以將我們
springBoot(16):集成redis
springboot 集成redis 一、簡介redis是一種可以持久存儲的緩存系統,是一個高性能的key-value數據庫。二、使用2.1、添加依賴<dependency> <groupId>org.springframework.boot</groupId>
springBoot(18):多賬號輪詢發送郵件
spring boot 多賬號 一、添加依賴<!-- mail --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b
springBoot(23):spring-security-
spring boot 安全 一、簡介Web應用的安全管理,主要包括兩個方面的內容:身份認證、用戶授權,此處使用spring-cloud-security來說明。二、依賴管理<dependency> <groupId>org.springframework.clou
TypeScript學習筆記(九):裝飾器(Decorators)
標註 時裝 als cal () 操作 enume 筆記 文檔 裝飾器簡介 裝飾器(Decorators)為我們在類的聲明及成員上通過元編程語法添加標註提供了一種方式。 需要註意的是:裝飾器是一項實驗性特性,在未來的版本中可能會發生改變。 若要啟用實驗性的裝飾器特性
Java-NIO(九):管道 (Pipe)
png bsp java nio pri java-nio ges 線程 pre logs Java NIO 管道是2個線程之間的單向數據連接。Pipe有一個source通道和一個sink通道。數據會被寫到sink通道,從source通道讀取。 代碼使用示例:
CUDA實例練習(九):頁鎖定主機內存
png blog 分配 pydev art event http tdi dev malloc()分配的內存與cudaHostAlloc()分配的內存之間存在著一個重要差異。C庫函數malloc()將分配標準的,可分頁的(Pagable)主機內存,而cudaHo