Spring Boot使用Druid连接池的示例代码

网友投稿 232 2023-01-29


Spring Boot使用Druid连接池的示例代码

Druid是java语言中最好的数据库连接池。Druid相比于其他的数据库连接池,有两大特性:

监控数据库,有利于分析线上数据库问题

更容易扩展,同时也很高效。

今天演示一下Spring Boot集成Druid。

实战

1、添加Maven依赖。

Spring Boot版本使用的是1.x的,2.x的版本druid starter还不支持。不过自定义也是没问题的。

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-jdbc

com.alibaba

druid-spring-boot-starter

1.1.6

配置Druid

2、Druid应用的配置。

server:

port: 9011

spring:

datasource:

type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.jdbc.Driver

druid:

initial-size: 5

max-active: 10

min-idle: 5

max-wait: 60000

pool-prepared-statements: true

max-pool-prepared-statement-per-connection-size: 20

validation-query: select 1

validation-query-timeout: 60000

test-on-borrow: false

test-on-return: false

test-while-idle: true

time-between-eviction-runs-millis: 60000

filter:

stat:

log-slow-sql: true

db-type: mysql

slow-sql-millis: 2000

stat-view-servlet:

login-username: druid

login-password: druid

allow: 127.0.0.1

url-pattern: /druid/*

username: root

password: 123456

url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8

通过JavaBean的配置更灵活一些,我们通过JavaBean来配置。

@Configuration

public class DruidConfig {

@Bean

public JdbcTemplate jdbcTemplate(){

return new JdbcTemplate(druidDataSource());

}

// ConfigurationProperties可以直接把应用配置的spring.datasource.druid属性开头的值注入到DruidDataSource中

@ConfigurationProperties(prefix = "spring.datasource.druid")

@Bean(initMethod = "init",destroyMethod = "close")

public DruidDataSource druidDataSource(){

DruidDataSource druidDataSource = new DruidDataSource();

// 添加druid的监控过滤器,当前只演示监控的功能,因此只有一个过滤器,可以实现多个过滤器

LinkedList filtersList = new LinkedList();

filtersList.add(filter());

druidDataSource.setProxyFilters(filtersList);

return druidDataSource;

}

@Bean

public Filter filter(){

StatFilter statFilter = new StatFilter();

// SQL执行时间超过2s种的被判定为慢日志

statFilter.setSlowSqlMillis(2000);

//显示慢日志

statFilter.setLogSlowSql(thttp://rue);

//合并SQL,有时,一些相同的慢日志过多影响阅读,开启合并功能

statFilter.setMergeSql(true);

return statFilter;

}

// 监控的面板

@Bean

public ServletRegistrationBean servletRegistrationBean(){

// 注册自己的Sevlet

return new ServletRegistrationBean(new StatViewServlet(),"/drhttp://uid/*");

}

}

3、新建SQL执行测试

使用JDBCTeplate选取数据库中的数据,我们只是演示Druid的监控效果。

@RestController

@SpringBootApplication

public class DaoApplication {

public static void main(String[] args) {

SpringApplication.run(DaoApplication.class,args);

}

@Autowired

JdbcTemplate jdbcTemplate;

@RequestMapping("/test")

public List test(){

final List idList = new LinkedList();

jdbcTemplate.query("select * from sh_test1", new RowCallbackHandler() {

@Override

public void processRow(ResultSet rs) throws SQLException {

idList.add(rs.getInt(1));

}

});

return idList;

}

}

运行查看效果

5、演示完毕

到这一步,Druid已经可以在Spring Boot中使用了,Druid提供了很多监控的选项,文章篇幅有限, 只介绍一下Druid集成Spring Boot的用法。

最后

这篇文章演示了一下Druid在SpringBoot中的使用。有关Druid的使用请看下面的参考。

参考

[Druid常见用法] (https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:vue中如何让子组件修改父组件数据
下一篇:关于共享文件系统如何下载视频的信息
相关文章

 发表评论

暂时没有评论,来抢沙发吧~