idea中springboot添加alibaba數據源

直接切入正題,

第一步添加相關依賴

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.0.23</version>
</dependency>

當然還不能缺少jdbc、mysql、mybatis等相關依賴

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.2</version>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

第二步在yml中添加配置,具體參數可以參照官網

spring:
  datasource:
#    原因是因爲MySQL版本過高,MySQL升級到8.0及以上,添加了許多新特性,安全性也得到提升。
#     當然操作時也增加了些繁瑣,需要考慮到的時區問題便是其中之一。
    #解決辦法:
    #a.url 部分加上 serverTimezone=UTC
    # b.url 部分加上 serverTimezone=Asia/Shanghai
    # c.或者在url路徑的問號後面加上:useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC,也可以解決問題.
    url: jdbc:mysql://127.0.0.1:3306/worter?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: tiger
    #  com.mysql.jdbc.Driver 已經被廢棄  要用com.mysql.cj.jdbc.Driver,此類可以被自動加載不用手動加載
#    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    #  數據源其他配置
#    初始化數量
    initialSize : 5
    #通過connectionProperties屬性來打開mergeSql功能;慢SQL記錄
    #connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    minIdle: 5
#    最大活躍線程
    maxActive: 20
    #最大連接等待超時時間
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validaionQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #    配置監控統計攔截的filters 去掉後監控界面sql無法統計,‘wall’用於防火牆
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true,druid.stat.slowSqlMills=500

雖然我們配置了druid連接池的其它屬性,但是不會生效。因爲默認是使用的java.sql.Datasource的類來獲取屬性的,有些屬性datasource沒有。如果我們想讓配置生效,需要手動創建Druid的配置文件。

第三步

接下來我們實現開啓監控功能。實現數據庫的各個方面的監控及數據統計,方便我們進行數據庫的優化。

我們來實現Druid的訪問Servlet和Filter。

在項目根目錄新建DruidConfiguration類。


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;

//數據源監控配置
@Configuration
public class DruidConfiguration {
//雖然我們配置了druid連接池的其它屬性,但是不會生效。因爲默認是使用的java.sql.Datasource的類來獲取屬性的,
// 有些屬性datasource沒有。如果我們想讓配置生效,需要手動創建Druid的配置文件。
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DruidDataSource druidDataSource(){
        return new DruidDataSource();
    }
    @Bean
    public ServletRegistrationBean statViewServlet(){
        //創建servlet註冊實體
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //設置ip白名單
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //設置ip黑名單,如果allow與deny共同存在時,deny優先於allow
        servletRegistrationBean.addInitParameter("deny","192.168.0.19");
        //設置控制檯管理用戶
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        servletRegistrationBean.addInitParameter("loginPassword","123123");
        //是否可以重置數據
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean statFilter(){
        //創建過濾器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //設置過濾器過濾路徑
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略過濾的形式
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

Druid的最強大之處在於它有着強大的監控,可以監控我們發送到數據庫的所有sql語句。方便我們後期排插錯誤。

配置完成之後我們啓動SpringBoot程序訪問:

http://localhost:8080/druid/ 就可以來到我們的登錄頁面面就是我們上面在DruidConfiguration中添加的控制檯管理用戶,我們可以在上面很好的看到運行狀況。

然後可以找幾個訪問數據源的操作,之後在sql監控菜單查看

 

菜單中很多功能還不太會用~~ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章