springboot的数据源和跟换数据源(druid)配置强大的druid的监控系统

其实在springboot中是默认自带的数据源,通过ioc容器注入我们来获取看一看它默认的是啥子哦

  • 在springboot的测试类中,通过@autowried注入Datasource,然后输出这个类;如下图:
  • 在这里插入图片描述
  • 通过输出我们可以看到它默认带的数据源是class com.zaxxer.hikari.HikariDataSource
  • 通过查阅资料可以知道这个是一个性能很高的数据源(hikari>druid>tomcat-jdbc>dbcp>c3p0)得益于最大限度的避免锁竞道争。

可以看一博主详细(《速度打败Druid的王者—HikariCP连接池》)

但是我要更换阿里的druid(是阿里的 稳定性好,且后台有一个监控系统,监控执行语句的次数,速度快慢) 它的监控功能强大,构建一个监控系统,有两种方法

第一种是通过声明式,

  • 首先增加依赖,现在pom文件中引入druid
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.12</version>
</dependency>
  • 然后在application.yml配置文件中配置druid,申明出来
spring:
  datasource:
    username: root
    password: xxx
    url: jdbc:mysql://xxx:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
  • 通过type: com.alibaba.druid.pool.DruidDataSource 声明druid数据源类型
  • 然后在运行测试方法:现在输出的就是druid的数据源

第二种就是通过编程式,现在我们可以先把配置文件中的type申明给注释掉了

  • 通过配置类生成
@Configuration
public class AppConfig {
@ConfigurationProperties(prefix = "spring.datasource") //将数据库连接信息直接封装到数据源对象中
@Bean
public DataSource dataSource() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setFilters("stat");//配置监控统计拦截的filters
return dataSource;
}
}
  • 现在运行测试方法 输出的同样是druid的数据源

现在druid配置完了 我们就可以先简单的配置一个druid的监控系统

  • 在配置类中添加配置最终:
public class DruidDataSourceConfig {
//第二种配置数据源是通过编程式,在配置文件的式申明式
	// @ConfigurationProperties这个注解会在配置文件中找前缀为spring.datasource的值注入
	@ConfigurationProperties(prefix = "spring.datasource") // 将数据库连接信息直接封装到数据源对象中
	@Bean
	public DataSource dataSource() throws SQLException {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setFilters("stat");// 配置监控统计拦截的filters
		return dataSource;
	}

	// 配置Druid的监控
	// 1、配置一个管理后台的Servlet
	@Bean
	public ServletRegistrationBean statViewServlet() {
		ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
		Map<String, String> initParams = new HashMap<>();
		initParams.put("loginUsername", "admin");
		initParams.put("loginPassword", "123456");
		initParams.put("allow", "");// 默认就是允许所有访问
		initParams.put("deny", "192.168.15.21");// 拒绝哪个ip访问
		bean.setInitParameters(initParams);
		return bean;
	}

	// 2、配置一个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;
	}
}
  • 我们可以设置登入的这个监控系统的密码,允许火阻止什么网段或ip的登陆等等,同时filter还可以配置要过滤的监控,还有很多的功能可以查看详细的文档

现在这个监控系统就算是构建成功,我们现在可以登入进入,我们设置的是/druid,现在我们进入且输入密码,可以看到系统:

  • 在这里插入图片描述
  • 好啦里面具体的内容就不解释啦

使用心得

  • druid的监控功能是很强大的
  • springboot大大减少了开发的工作量点赞
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值