其实在springboot中是默认自带的数据源,通过ioc容器注入我们来获取看一看它默认的是啥子哦
- 在springboot的测试类中,通过@autowried注入Datasource,然后输出这个类;如下图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/49886cffd81e959765225179a90f8409.png#pic_center)
- 通过输出我们可以看到它默认带的数据源是class com.zaxxer.hikari.HikariDataSource
- 通过查阅资料可以知道这个是一个性能很高的数据源(hikari>druid>tomcat-jdbc>dbcp>c3p0)得益于最大限度的避免锁竞道争。
可以看一博主详细(《速度打败Druid的王者—HikariCP连接池》)
但是我要更换阿里的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");
return dataSource;
}
}
现在druid配置完了 我们就可以先简单的配置一个druid的监控系统
public class DruidDataSourceConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource dataSource() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setFilters("stat");
return dataSource;
}
@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,现在我们进入且输入密码,可以看到系统:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e6e76c3eb068e031c4c3d5be9d25b1a5.png#pic_center)
- 好啦里面具体的内容就不解释啦
使用心得
- druid的监控功能是很强大的
- springboot大大减少了开发的工作量点赞