1. 程式人生 > 實用技巧 >記在linux上使用git

記在linux上使用git

springboot整合druid

pom檔案

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dtg</groupId>
<artifactId>springdruid</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springdruid</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- druid 依賴-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>

<!-- druid監控 依賴-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

application.yml配置

spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true@characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 預設是不注入這些屬性值的,需要自己繫結
#druid 資料來源專有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 開啟PSCache
poolPreparedStatements: true
#配置監控統計攔截的filters,stat:監控統計、log4j:日誌記錄、wall:防禦sql注入
#如果執行時報錯 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#則匯入 log4j 依賴即可,Maven 地址: https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j,config
#指定每個連線上PSCache的大小
maxPoolPreparedStatementPerConnectionSize: 20
#合併多個DruidDataSource的監控資料
useGlobalDataSourceStat: true
#通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

server:
port: 8080

新增DruidConfig配置類

使druid 資料來源專有配置生效

package com.dtg.springdruid.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 javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;

@Configuration
public class DruidConfig {

@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}

//因為Springboot內建了servlet容器,所以沒有web.xml,替代方法就是將ServletRegistrationBean註冊進去
//加入後臺監控
@Bean //這裡其實就相當於servlet的web.xml
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean <StatViewServlet> bean =
new ServletRegistrationBean <StatViewServlet>(new StatViewServlet(), "/druid/*");

//後臺需要有人登入,進行配置
//bean.addUrlMappings(); 這個可以新增對映,我們在構造裡已經寫了
//設定一些初始化引數
Map <String, String> initParas = new HashMap <String, String>();
initParas.put("loginUsername", "admin");//它這個賬戶密碼是固定的
initParas.put("loginPassword", "123456");
//允許誰能防偽
initParas.put("allow", "");//這個值為空或沒有就允許所有人訪問,ip白名單
//initParas.put("allow","localhost");//只允許本機訪問,多個ip用逗號,隔開
//initParas.put("deny","");//ip黑名單,拒絕誰訪問 deny和allow同時存在優先deny
initParas.put("resetEnable", "false");//禁用HTML頁面的Reset按鈕
bean.setInitParameters(initParas);
return bean;
}

//再配置一個過濾器,Servlet按上面的方式註冊Filter也只能這樣
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
//可以設定也可以獲取,設定一個阿里巴巴的過濾器
bean.setFilter(new WebStatFilter());
bean.addUrlPatterns("/*");
//可以過濾和排除哪些東西
Map <String, String> initParams = new HashMap <String, String>();
//把不需要監控的過濾掉,這些不進行統計
initParams.put("exclusions", "*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
return bean;
}
}

編寫測試類

package com.dtg.springdruid;

import com.alibaba.druid.pool.DruidDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

@SpringBootTest
class SpringdruidApplicationTests {

@Autowired
DataSource dataSource;


@Test
void contextLoads() {

System.out.println(dataSource.getClass());
Connection connection = null;
try {
connection = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(connection);

DruidDataSource druidDataSource = (DruidDataSource)dataSource;
System.out.println(druidDataSource.getMaxActive());
System.out.println(druidDataSource.getInitialSize());
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}

測試結果

class com.alibaba.druid.pool.DruidDataSource com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@44faa4f2 20 5