持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情
一、整合Drui数据源
1-1、创建springboot项目
首先先创建springboot项目,使用idea创建比较方便,同时选择相关依赖
1-2、添加drui数据库连接池
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
1-3、配置数据连接池相关信息
因为配置信息比较多,因此建议使用application.yml文件,这比较清晰,数据源的驱动可以参考如下方法:
最终关于数据库配置如下:
#数据源
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/springboot_mybatis?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
schema: classpath:sql/mybatis.sql
initialization-mode: ALWAYS
1-4、数据源配置类
虽然配置了上面相关数据库的配置,但是因为没有场景启动器,是无法使用的,之前在springmvc的文章中也介绍关于数据源的配置。有兴趣同学可以翻一下之前的文章。
在springboot中设置数据源配置类有两种方式,一种是将配置加载到DataSource中,另外一种是根据配置动态构建一个DataSource,
以上两种方式都可以完成数据源的配置,但是相比较第一种比较灵活。易用。
1-5、Drui数据库监控控制台
首先在配置类中添加Drui监控台的Servlet以及过滤器,最终Drui的配置类信息如下:
package com.jony.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;
@Configuration
public class DruidConfig {
// 将所有前缀为spring.datasource下的配置项都加载到DataSource中
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}
//根据配置动态构建一个DataSource
// @Bean
// public DataSource druidDataSource1(DataSourceProperties properties){
// return properties.initializeDataSourceBuilder().build();
// }
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 添加IP白名单
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
// 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
//servletRegistrationBean.addInitParameter("deny", "127.0.0.1");
// 添加控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
// 是否能够重置数据
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
/**
* 配置服务过滤器
*
* @return 返回过滤器配置对象
*/
@Bean
public FilterRegistrationBean statFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
// 添加过滤规则
filterRegistrationBean.addUrlPatterns("/*");
// 忽略过滤格式
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*,");
return filterRegistrationBean;
}
}
1-5-1、访问drui控制台
二、使用Drui场景启动器
通过上面已经了解到如何使用drui实现数据库及连接池的配置,但是还是比较繁琐的,下面就看一下使用简单的方式:drui场景启动器来实现数据源的配置。
2-1、添加springboot场景启动器依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.9</version>
</dependency>
2-2、启动项目访问drui
将之前配置的duri配置类注释掉,然后再次访问控制台
2-2、探究drui场景启动器的自动配置类
首先通过包,进入自动配置类,如下
然后进入这个方法
因为DruidDataSourceWrapper类实现了InitializingBean,因此在spring启动的时候就会加载这个配置,这样数据源的信息就可以自动配置上了
2-4、使用场景启动器设置druid页面
2-4-1、查看servlet
继续看durid的自动配置类,可以看到标记的类
进入之后可以发现,和我们自己配置的启动类差不多,但是类上加了注解
@ConditionalOnProperty(
name = {"spring.datasource.druid.stat-view-servlet.enabled"},
havingValue = "true"
)
这样就是说必须在配置文件中添加spring.datasource.druid.stat-view-servlet.enabled=true才可以让当前类生效。
2-4-2、查看过滤器
同样进入这个过滤器类
可以看到和我自己配置的也基本一致
同样要使用过滤器也需要在配置文件中进行配置
这样通过springboot的场景启动器就可以实现通过简单的配置实现drui的相关功能了。