Springboot+druid

news2024/11/30 6:55:40

1.Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

2.配置maven

	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>${druid-version}</version>
	</dependency>

3.druid配置



spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driverClassName: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/data_one?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=false
      username: root
      password: root
      # 初始化大小,最小,最大
      initial-size: 10
      max-active: 100
      min-idle: 10
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      max-pool-prepared-statement-per-connection-size: 20
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      max-evictable-idle-time-millis: 60000
      validation-query: SELECT 1 FROM DUAL
      # validation-query-timeout: 5000
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      #filters: #配置多个英文逗号分隔(统计,sql注入,log4j过滤)
      filters: stat,wall
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*






4.打开Druid的监控统计功能

Druid的监控统计功能是通过filter-chain扩展实现,如果你要打开监控统计功能,配置StatFilter

http://localhost:8007/druid/login.html

 /**
     * 配置 Druid 监控界面
     */
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean srb =
                new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //设置控制台管理用户
        srb.addInitParameter("loginUsername","root");
        srb.addInitParameter("loginPassword","root");
        //是否可以重置数据
        srb.addInitParameter("resetEnable","false");
        return srb;
    }

 

5.配置过滤器

@Bean
    public FilterRegistrationBean statFilter(){
        //创建过滤器
        FilterRegistrationBean frb =
                new FilterRegistrationBean(new WebStatFilter());
        //设置过滤器过滤路径
        frb.addUrlPatterns("/*");
        //忽略过滤的形式
        frb.addInitParameter("exclusions",
                "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return frb;
    }
}

6.jdbc操作

   /**
     * JDBC操作配置
     */
    @Bean(name = "dataOneTemplate")
    public JdbcTemplate jdbcTemplate (@Autowired DruidDataSource dataSource){
        return new JdbcTemplate(dataSource) ;
    }

7.Druid数据库连接池配置文件

/**
 * Druid数据库连接池配置文件
 */
@Configuration
public class DruidConfig {
    private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);

    @Value("${spring.datasource.druid.url}")
    private String dbUrl;

    @Value("${spring.datasource.druid.username}")
    private String username;

    @Value("${spring.datasource.druid.password}")
    private String password;

    @Value("${spring.datasource.druid.driverClassName}")
    private String driverClassName;

    @Value("${spring.datasource.druid.initial-size}")
    private int initialSize;

    @Value("${spring.datasource.druid.max-active}")
    private int maxActive;

    @Value("${spring.datasource.druid.min-idle}")
    private int minIdle;

    @Value("${spring.datasource.druid.max-wait}")
    private int maxWait;

    @Value("${spring.datasource.druid.pool-prepared-statements}")
    private boolean poolPreparedStatements;

    @Value("${spring.datasource.druid.max-pool-prepared-statement-per-connection-size}")
    private int maxPoolPreparedStatementPerConnectionSize;

    @Value("${spring.datasource.druid.time-between-eviction-runs-millis}")
    private int timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.druid.min-evictable-idle-time-millis}")
    private int minEvictableIdleTimeMillis;

    @Value("${spring.datasource.druid.max-evictable-idle-time-millis}")
    private int maxEvictableIdleTimeMillis;

    @Value("${spring.datasource.druid.validation-query}")
    private String validationQuery;

    @Value("${spring.datasource.druid.test-while-idle}")
    private boolean testWhileIdle;

    @Value("${spring.datasource.druid.test-on-borrow}")
    private boolean testOnBorrow;

    @Value("${spring.datasource.druid.test-on-return}")
    private boolean testOnReturn;

    @Value("${spring.datasource.druid.filters}")
    private String filters;

    @Value("{spring.datasource.druid.connection-properties}")
    private String connectionProperties;

    /**
     * Druid 连接池配置
     */
    @Bean     //声明其为Bean实例
    public DruidDataSource dataSource() {
        DruidDataSource datasource = new DruidDataSource();
        datasource.setUrl(dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setMaxEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
        try {
            datasource.setFilters(filters);
        } catch (Exception e) {
            logger.error("druid configuration initialization filter", e);
        }
        datasource.setConnectionProperties(connectionProperties);
        return datasource;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wireshark TS | 网络路径不一致传输丢包问题

问题背景 网络路径不一致&#xff0c;或者说是网络路径来回不一致&#xff0c;再专业点可以说是网络路径不对称&#xff0c;以上种种说法&#xff0c;做网络方向的工程师肯定会更清楚些&#xff0c;用简单的描述就是&#xff1a; A 与 B 通讯场景&#xff0c;C 和 D 代表中间…

Tomcat配置ssl

Tomcat配置ssl 部署tomcat服务&#xff0c;项目做到用https访问&#xff0c;使用nginx去做&#xff0c;访问任意一个子网站&#xff0c;都是https 或者 医美项目需要 上传jdk 456 tomcat war包 [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/…

一文看懂微信小程序新版隐私协议(附带弹窗组件)

一、前言 微信小程序近期又迎来了一次改革–9月15日之后如果小程序涉及调用微信的隐私接口获取用户的信息的&#xff0c;需要用户手动同意协议后才可正常调用接口&#xff0c;否则会返回报错信息。 隐私接口目前常用的有&#xff1a;手机号快捷获取、读取照片、获取用户的头像…

ArcGIS Pro3.0.2保姆级安装教程(附安装包)

软件简介&#xff1a; ArcGIS Pro是ERSI推出的新一代原生态64位ArcGIS桌面产品。具备强大的二维、三维一体化功能&#xff0c;继承了传统桌面产品ArcMap等产品几乎所有的功能&#xff0c;并在多个方面作了进一步的优化和改进&#xff0c;是云端一体化、数据科学与空间数据科学…

基于FPGA的图像二值化处理,包括tb测试文件和MATLAB辅助验证

1.算法运行效果图预览 将FPGA的数据导入到matlab进行显示 2.算法运行软件版本 Vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps ............................................................................. module test_image;reg i_clk; reg i_rst; r…

基于SpringBoot+VUE的考试题库刷题系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在现代教育领域&#…

spring---第四篇

系列文章目录 文章目录 系列文章目录一、解释下Spring支持的几种bean的作用域。二、Spring框架中的单例Bean是线程安全的么?一、解释下Spring支持的几种bean的作用域。 singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。该 对象的生命周期…

c++动态对象

目录 malloc和free动态申请 c中动态申请 用于数组的 new 和 delete delete void*问题 使用 new 和 delete 采用相同形式 malloc和free动态申请 在c中 释放对象时 系统会自动调用析构函数 但在以下代码编译运行后 析构和构造均未调用 所以在c中不能用malloc和free动态申请…

华为云云耀云服务器L实例评测|使用Docker部署Leanote笔记工具

华为云云耀云服务器L实例评测&#xff5c;使用Docker部署Leanote笔记工具 一、前言1.1 云耀云服务器L实例介绍1.2 Leanote简介 二、本次实践介绍2.1 本次实践简介2.2 本次环境规划 三、购买云耀云服务器L实例3.1 购买云耀云服务器L实例3.3 查看云耀云服务器L实例状态3.4 重置服…

CRM软件系统使用详细流程

很多人不太了解CRM系统&#xff0c;不知道CRM在哪里打开。其实&#xff0c;在线CRM系统使用非常简单&#xff0c;只要您打开浏览器&#xff0c;输入对应网址就可以访问使用&#xff0c;完全不用下载软件&#xff0c;随时随地都可以使用。 1、选择CRM供应商 选择合适的CRM供应…

离子风蛇有什么作用?

离子风蛇的工作原理是通过内置的高压发生器升至高压电晕空气生成正负离子&#xff0c;再随风流覆盖至物体表面&#xff0c;从而中和其所带的正负静电电荷&#xff0c;这是一种用在工厂里面的工业设备&#xff0c;主要的作用是用来消除静电&#xff0c;其次还可以达到除尘和杀菌…

elementui el-dialog 动态生成多个,点击按钮打开对应的 dialog

业务场景&#xff1a; 根据后端返回的数据&#xff0c;动态生成表单&#xff0c;返回的数据中会有表单字段的类型&#xff0c;如果单选、多选、富文本&#xff0c;其它的属性还好说&#xff0c;重点说在富文本&#xff0c;因为我想通过 dialog 弹窗的方式&#xff0c;进行富文…

frp 内网穿透安装配置使用

文档先发一下&#xff08;好像要科学上网&#xff09; Github 项目地址 查看系统架构 需要一个服务器当做服务端进行端口转接&#xff0c;连接服务器之后&#xff0c;输入以下命令查看系统 uname -a拉取程序包 输入以下命令下载 frp 程序包&#xff0c;按版本号改第一个命令…

工业网络通讯技术的发展历程

工业互联网可以通过人、机、物的全面互联&#xff0c;实现产业链、生产链、全价值链的全面连接&#xff0c;将行业、企业的各种数据和信息都通过平台进行处理分析&#xff0c;对整个工厂的生产、运营、采购、销售乃至研发设计进行管理&#xff0c;提高企业的生产效率&#xff0…

完整版:IPSec报文格式

IPSec协议族是IETF&#xff08;Internet Engineering Task Force&#xff09;制定的一系列协议&#xff0c;它为IP数据报提供了高质量的、可互操作的、基于密码学的安全性。 IPSec通过认证头AH&#xff08;Authentication Header&#xff0c;协议号51&#xff09;和封装安全载…

ipad触控笔有必要买原装吗?开学季ipad2023手写笔推荐

随着开学新学期的开始了&#xff0c;而平板电脑也开始在学校里流行了起来&#xff0c;这也给学生们带来了更多的便利。而苹果的原装电容笔&#xff0c;尽管功能很强&#xff0c;但是因为它的价格比较贵&#xff0c;要是你仅仅只是用来做学习和记录笔记的话&#xff0c;所以在国…

用C语言实现牛顿摆控制台动画

题目 用C语言实现牛顿摆动画&#xff0c;模拟小球的运动&#xff0c;如图所示 拆解 通过控制台API定位输出小球运动的只是2边小球&#xff0c;中间小球不运动&#xff0c;只需要固定位置输出左边小球上升下降时&#xff0c;X、Y轴增量一致。右边小球上升下降时&#xff0c;X、…

解决在远程连接的linux服务器上调用matplotlib画图的问题

前言&#xff1a; 我遇到这个问题的时候&#xff0c;在知乎上看到了一个回答&#xff0c;结果评论区看到了一个最简洁的解。 https://zhuanlan.zhihu.com/p/346384579 效果 左边是代码&#xff0c;右边是结果&#xff0c;弊处就是有点慢。 安装步骤 1. 安装插件 在代码处…

荣威 D7 正式亮相,新能源江湖再战

在 2023 成都车展上&#xff0c;荣威回归轿车领域的全新车型——D7 正式亮相。新车将推出纯电和插混的版本。 一、内饰实拍 内饰方面&#xff0c;这也是荣威 D7 的首次开门。可以看到&#xff0c;荣威 D7 将采用类似三联屏的设计&#xff0c;实际采用的是双 12.3 英寸液晶屏。…

linux 多重启动grub2详解

https://www.gnu.org/software/grub/manual/grub/grub.pdf