Spring Boot 2.0配置druid

第一種方式:

一、引入相關的包,剛開始沒引入log4j包,一直報錯。css

<!--druid包-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.0.18</version>
</dependency>
<!--druid使用的日誌包-->
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

二、添加druid相關的屬性配置,具體各屬性的意思,能夠找官網或百度上去搜。html

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/SpringBoot?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT1FROMDUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    filters: stat,wall,log4j
    logSlowSql: true

三、將DruidConfig配置類注入到spring boot中java

@Configuration
public class DruidConfiguration {
    private static final String DB_PREFIX = "spring.datasource";
    //讀取相關的屬性配置
    @ConfigurationProperties(prefix = DB_PREFIX)
    @Bean
    public DataSource dataSource(){
        return new DruidDataSource();
    }
    //配置一個管理後臺的Servlet,配置Druid的監控
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        Map<String,String> initParams = new HashMap<String, String>();
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");

        bean.setInitParameters(initParams);
        return bean;
    } 
    //配置一個web監控的filter
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());

        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");

        bean.setInitParameters(initParams);

        bean.setUrlPatterns(Arrays.asList("/*"));

        return  bean;
    }
}

運行便可。mysql

第二種方式:

   均源於阿里參考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-startergit

一、在 Spring Boot 項目中加入druid-spring-boot-starter依賴github

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.10</version>
</dependency>

二、添加配置web

spring.datasource.url= 
spring.datasource.username=
spring.datasource.password=
# ...其餘配置(可選,不是必須的,使用內嵌數據庫的話上述三項也可省略不填)

配置屬性

Druid Spring Boot Starter 配置屬性的名稱徹底遵守 Druid,你能夠經過 Spring Boot 配置文件來配置Druid數據庫鏈接池和監控,若是沒有配置則使用默認值。spring

  • JDBC 配置
spring.datasource.druid.url= # 或spring.datasource.url= 
spring.datasource.druid.username= # 或spring.datasource.username=
spring.datasource.druid.password= # 或spring.datasource.password=
spring.datasource.druid.driver-class-name= #或 spring.datasource.driver-class-name=
  • 鏈接池配置
spring.datasource.druid.initial-size=
spring.datasource.druid.max-active=
spring.datasource.druid.min-idle=
spring.datasource.druid.max-wait=
spring.datasource.druid.pool-prepared-statements=
spring.datasource.druid.max-pool-prepared-statement-per-connection-size= 
spring.datasource.druid.max-open-prepared-statements= #和上面的等價
spring.datasource.druid.validation-query=
spring.datasource.druid.validation-query-timeout=
spring.datasource.druid.test-on-borrow=
spring.datasource.druid.test-on-return=
spring.datasource.druid.test-while-idle=
spring.datasource.druid.time-between-eviction-runs-millis=
spring.datasource.druid.min-evictable-idle-time-millis=
spring.datasource.druid.max-evictable-idle-time-millis=
spring.datasource.druid.filters= #配置多個英文逗號分隔
....//more
  • 監控配置
# WebStatFilter配置,說明請參考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled= #是否啓用StatFilter默認值true
spring.datasource.druid.web-stat-filter.url-pattern=
spring.datasource.druid.web-stat-filter.exclusions=
spring.datasource.druid.web-stat-filter.session-stat-enable=
spring.datasource.druid.web-stat-filter.session-stat-max-count=
spring.datasource.druid.web-stat-filter.principal-session-name=
spring.datasource.druid.web-stat-filter.principal-cookie-name=
spring.datasource.druid.web-stat-filter.profile-enable=

# StatViewServlet配置,說明請參考Druid Wiki,配置_StatViewServlet配置
spring.datasource.druid.stat-view-servlet.enabled= #是否啓用StatViewServlet默認值true
spring.datasource.druid.stat-view-servlet.url-pattern=
spring.datasource.druid.stat-view-servlet.reset-enable=
spring.datasource.druid.stat-view-servlet.login-username=
spring.datasource.druid.stat-view-servlet.login-password=
spring.datasource.druid.stat-view-servlet.allow=
spring.datasource.druid.stat-view-servlet.deny=

# Spring監控配置,說明請參考Druid Github Wiki,配置_Druid和Spring關聯監控配置
spring.datasource.druid.aop-patterns= # Spring監控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔

Druid Spring Boot Starter 不只限於對以上配置屬性提供支持,DruidDataSource 內提供setter方法的可配置屬性都將被支持。你能夠參考WIKI文檔或經過IDE輸入提示來進行配置。配置文件的格式你能夠選擇.properties.yml,效果是同樣的,在配置較多的狀況下推薦使用.ymlsql

注入配置類數據庫

@Configuration
@ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource", matchIfMissing = true)
public class DruidDataSource {
    @Bean
    @ConfigurationProperties("spring.datasource.druid")
    public DataSource dataSourceOne() {
        return DruidDataSourceBuilder.create().build();
    }
}

 

 

如何配置多數據源

  1. 添加配置
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

# Druid 數據源配置,繼承spring.datasource.* 配置,相同則覆蓋
...
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=5
...

# Druid 數據源 1 配置,繼承spring.datasource.druid.* 配置,相同則覆蓋
...
spring.datasource.druid.one.max-active=10
spring.datasource.druid.one.max-wait=10000
...

# Druid 數據源 2 配置,繼承spring.datasource.druid.* 配置,相同則覆蓋
...
spring.datasource.druid.two.max-active=20
spring.datasource.druid.two.max-wait=20000
...

強烈注意:Spring Boot 2.X 版本再也不支持配置繼承,多數據源的話每一個數據源的全部配置都須要單獨配置,不然配置不會生效

  1. 建立數據源
@Primary
@Bean
@ConfigurationProperties("spring.datasource.druid.one")
public DataSource dataSourceOne(){
    return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.two")
public DataSource dataSourceTwo(){
    return DruidDataSourceBuilder.create().build();
}

如何配置 Filter

你能夠經過 spring.datasource.druid.filters=stat,wall,log4j ... 的方式來啓用相應的內置Filter,不過這些Filter都是默認配置。若是默認配置不能知足你的需求,你能夠放棄這種方式,經過配置文件來配置Filter,下面是例子。

# 配置StatFilter 
spring.datasource.druid.filter.stat.db-type=h2
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000

# 配置WallFilter 
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=h2
spring.datasource.druid.filter.wall.config.delete-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false

# 其餘 Filter 配置再也不演示

目前爲如下 Filter 提供了配置支持,請參考文檔或者根據IDE提示(spring.datasource.druid.filter.*)進行配置。

  • StatFilter
  • WallFilter
  • ConfigFilter
  • EncodingConvertFilter
  • Slf4jLogFilter
  • Log4jFilter
  • Log4j2Filter
  • CommonsLogFilter

要想使自定義 Filter 配置生效須要將對應 Filter 的 enabled 設置爲 true ,Druid Spring Boot Starter 默認會啓用 StatFilter,你也能夠將其 enabled 設置爲 false 來禁用它。

 

網上摘抄:

# JDBC 配置(驅動類自動從url的mysql識別,數據源類型自動識別)
# 或spring.datasource.url=
spring.datasource.druid.url=jdbc:mysql://192.168.1.1:3306/test?useUnicode=true&characterEncoding=UTF8
# 或spring.datasource.username=
spring.datasource.druid.username=root
# 或spring.datasource.password=
spring.datasource.druid.password=root
#或 spring.datasource.driver-class-name=
#spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver

#鏈接池配置(一般來講,只須要修改initialSize、minIdle、maxActive
# 若是用Oracle,則把poolPreparedStatements配置爲true,mysql能夠配置爲false。分庫分表較多的數據庫,建議配置爲false。removeabandoned不建議在生產環境中打開若是用SQL Server,建議追加配置)
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=1
# 配置獲取鏈接等待超時的時間
spring.datasource.druid.max-wait=60000 
#打開PSCache,而且指定每一個鏈接上PSCache的大小
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#spring.datasource.druid.max-open-prepared-statements=和上面的等價
spring.datasource.druid.validation-query=SELECT 'x'
#spring.datasource.druid.validation-query-timeout=
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
#配置間隔多久才進行一次檢測,檢測須要關閉的空閒鏈接,單位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
#配置一個鏈接在池中最小生存的時間,單位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
#spring.datasource.druid.max-evictable-idle-time-millis=
#配置多個英文逗號分隔
spring.datasource.druid.filters= stat

# WebStatFilter配置,說明請參考Druid Wiki,配置_配置WebStatFilter
#是否啓用StatFilter默認值true
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.web-stat-filter.session-stat-enable=false
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000
spring.datasource.druid.web-stat-filter.principal-session-name=admin
spring.datasource.druid.web-stat-filter.principal-cookie-name=admin
spring.datasource.druid.web-stat-filter.profile-enable=true

# StatViewServlet配置
#展現Druid的統計信息,StatViewServlet的用途包括:1.提供監控信息展現的html頁面2.提供監控信息的JSON API
#是否啓用StatViewServlet默認值true
spring.datasource.druid.stat-view-servlet.enabled=true
#根據配置中的url-pattern來訪問內置監控頁面,若是是上面的配置,內置監控頁面的首頁是/druid/index.html例如:
#http://110.76.43.235:9000/druid/index.html
#http://110.76.43.235:8080/mini-web/druid/index.html
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
#容許清空統計數據
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
#StatViewSerlvet展現出來的監控信息比較敏感,是系統運行的內部狀況,若是你須要作訪問控制,能夠配置allow和deny這兩個參數
#deny優先於allow,若是在deny列表中,就算在allow列表中,也會被拒絕。若是allow沒有配置或者爲空,則容許全部訪問
#配置的格式
#<IP>
#或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24
#24表示,前面24位是子網掩碼,比對的時候,前面24位相同就匹配,不支持IPV6。
spring.datasource.druid.stat-view-servlet.allow=
spring.datasource.druid.stat-view-servlet.deny=128.242.127.1/24,128.242.128.1

# Spring監控配置,說明請參考Druid Github Wiki,配置_Druid和Spring關聯監控配置
spring.datasource.druid.aop-patterns= # Spring監控AOP切入點,如x.y.z.service.*,配置多個英文逗號分隔


#配置日誌
#不一樣目錄下的日誌可配置不一樣級別 info,error
logging.level.com.euler: debug 
logging.level.org.springfromework.web: info
相關文章
相關標籤/搜索