其实在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大大减少了开发的工作量点赞