SpringBoot怎么进行整合Druid数据源

1.自定义方式

使用自定义方式整合Druid

SpringBoot怎么进行整合Druid数据源

1.添加依赖

在pom.xml添加相关依赖

  <!--数据库相关-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jdbc</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.6</version>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.2.6</version>        </dependency>    </dependencies>

2.编写配置

application.properties

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/db_springtest?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

配置Druid的监控页功能:

Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。官方文档 – 配置StatViewServlet

这个StatViewServlet的用途包括:

  • 提供监控信息展示的html页面

  • 提供监控信息的JSON API

Druid内置提供一个StatFilter,用于统计监控信息。官方文档 – 配置_StatFilter

WebStatFilter用于采集web-jdbc关联监控的数据,如SQL监控、URI监控。官方文档 – 配置WebStatFilter

Druid提供了WallFilter,它是基于SQL语义分析来实现防御SQL注入攻击的。官方文档 – 配置 wallfilter

DataSourceConfig

package com.limi.springboottest2.config;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;import java.sql.SQLException;import java.util.Arrays;@Configurationpublic class DataSourceConfig {    @Bean    @ConfigurationProperties("spring.datasource")//复用配置文件的数据源配置, 这样就不用写代码一个一个set了    public DataSource dataSource() throws SQLException {        DruidDataSource druidDataSource = new DruidDataSource();        //加入监控和防火墙功能功能        druidDataSource.setFilters("stat,wall");        return druidDataSource;    }    /**     * 配置 druid的监控页功能     * @return     */    @Bean    public ServletRegistrationBean statViewServlet(){        StatViewServlet statViewServlet = new StatViewServlet();        ServletRegistrationBean<StatViewServlet> registrationBean =                new ServletRegistrationBean<>(statViewServlet, "/druid/*");        //监控页账号密码:        registrationBean.addInitParameter("loginUsername","admin");        registrationBean.addInitParameter("loginPassword","123456");        return registrationBean;    }    /**     * WebStatFilter 用于采集web-jdbc关联监控的数据。     */    @Bean    public FilterRegistrationBean webStatFilter(){        WebStatFilter webStatFilter = new WebStatFilter();        FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<>(webStatFilter);        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");        return filterRegistrationBean;    }}

3.测试

HelloController

package com.limi.springboottest2.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class HelloController {    @Autowired    private JdbcTemplate jdbcTemplate;    @ResponseBody    @GetMapping("/sql")    public String test1(){        String sql = "select count(*) from t_user";        Long i = jdbcTemplate.queryForObject(sql, Long.class);        return i.toString();    }}

多次点击刷新进行访问

SpringBoot怎么进行整合Druid数据源

登录druid后台查看监控信息

账号admin, 密码123456

SpringBoot怎么进行整合Druid数据源

SpringBoot怎么进行整合Druid数据源

SpringBoot怎么进行整合Druid数据源

2.starter方式(推荐)

使用场景启动器整合druid, 效果和自定义方式一样, 但更加方便

1.添加依赖

在pom.xml添加相关依赖

        <!--数据库相关-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jdbc</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.6</version>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid-spring-boot-starter</artifactId>            <version>1.1.17</version>        </dependency>

pom.xml完整内容如下

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.7.0</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.limi</groupId>    <artifactId>springboot-test2</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>springboot-test2</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-devtools</artifactId>            <scope>runtime</scope>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-configuration-processor</artifactId>            <optional>true</optional>        </dependency>        <!--数据库相关-->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jdbc</artifactId>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.6</version>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid-spring-boot-starter</artifactId>            <version>1.1.17</version>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>                <configuration>                    <excludes>                        <exclude>                            <groupId>org.projectlombok</groupId>                            <artifactId>lombok</artifactId>                        </exclude>                    </excludes>                </configuration>            </plugin>            <!-- 下面插件作用是工程打包时,不将spring-boot-configuration-processor打进包内,让其只在编码的时候有用 -->            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>                <configuration>                    <excludes>                        <exclude>                            <groupId>org.springframework.boot</groupId>                            <artifactId>spring-boot-configuration-processor</artifactId>                        </exclude>                    </excludes>                </configuration>            </plugin>        </plugins>    </build></project>

2.编写配置

application.properties

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/db_springtest?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#监控SpringBean
spring.datasource.druid.aop-patterns=com.limi.springboottest2.*
# 底层开启功能,stat(sql监控),wall(防火墙)
spring.datasource.druid.filters=stat,wall

# 配置监控页功能
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123456
spring.datasource.druid.stat-view-servlet.reset-enable=false

# 监控web
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=’*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*’

# 对上面filters里面的stat的详细配置
spring.datasource.druid.filter.stat.slow-sql-millis=1000
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.enabled=true
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.config.drop-table-allow=false

3.测试

HelloController

package com.limi.springboottest2.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class HelloController {    @Autowired    private JdbcTemplate jdbcTemplate;    @ResponseBody    @GetMapping("/sql")    public String test1(){        String sql = "select count(*) from t_user";        Long i = jdbcTemplate.queryForObject(sql, Long.class);        return i.toString();    }}

多次点击刷新进行访问

SpringBoot怎么进行整合Druid数据源

登录druid后台查看监控信息

账号admin, 密码123456

SpringBoot怎么进行整合Druid数据源

SpringBoot怎么进行整合Druid数据源

SpringBoot怎么进行整合Druid数据源

以上就是“SpringBoot怎么进行整合Druid数据源”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

文章标题:SpringBoot怎么进行整合Druid数据源,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/25679

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月15日 下午11:40
下一篇 2022年9月15日 下午11:41

相关推荐

  • 如何进行XiaoBa勒索病毒变种分析

    概述 XiaoBa勒索病毒,是一种新型电脑病毒,是一款国产化水平极高的勒索病毒,主要以邮件,程序木马,网页挂马的形式进行传播。这种病毒利用各种加密算法对文件进行加密,被感染者一般无法解密,必须拿到解密的私钥才有可能破解。倒计时200秒还不缴赎金,被加密的文件就会被全部销毁。 以上说明摘自百度百科,但…

    2022年9月21日
    70300
  • Mysql中锁的使用场景是什么

    Mysql中锁的使用场景主要有:常见锁类型、Mysql引擎介绍、常用引擎间的区别、共享锁与排他锁、排他锁的实际应用、共享锁的实际应用、死锁的发生、另一种发生死锁的情景、死锁的解决方式、意向锁和计划锁、乐观锁和悲观锁。 一、常见锁类型 表级锁,锁定整张表 页级锁,锁定一页 行级锁,锁定一行 共享锁,也…

    2022年6月29日
    70500
  • MySQL中超键、主键及候选键的区别是什么

    关于超键和主键及候选键的区别 最近在看MySQL的书时遇到了一个问题: 既然已经有了主键这个概念,主键已经能够满足需求了,那为什么还要有候选键这种东西?候选键的作用是什么呢?给了它一个候选键的定义但是它真的并没有什么乱用。 抱着刨根问底拦不住的心态我去网上搜了搜,看了看大神们的解释,看得我还是有些懵…

    2022年9月6日
    94000
  • internet中怎么达到共享传输线路的目的

    internet中主要采用路由技术来达到共享传输线路的目的;路由技术主要是指路由选择算法、因特网的路由选择协议的特点及分类,其中路由选择算法可以分为静态路由选择算法和动态路由选择算法,因特网的路由选择协议的特点是属于自适应的选择协议,是分布式路由选择协议,采用分层次的路由选择协议。 本教程操作环境:…

    2022年8月30日
    33900
  • windows 0x000006d9无法共享打印机怎么解决

    解决方法: 方法一: 1、首先右击桌面的此电脑,然后点击管理, 2、然后选择里面的“服务和应用程序”。 3、然后点击左侧任务栏的服务。 4、在出现的服务列表找到“windows firewall”选择“启动”命令。 方法二: 1、首先我们在左下角搜索并打开“控制面板” 2、在右上角找到查看方式,更改…

    2022年9月16日
    51100
  • windows如何修改一张图片的分辨率

    修改方法 1、打开图片,右击选择属性。可以从属性详细信息中查看到这个图片的分辨率。当前这个图片分辨率为687*379。 2、右击图片,选择编辑。打开图片编辑界面。也可以直接打开画图软件,在画图软件中打开需要编辑的这张图片。 3、选择工具栏中的重新调整大小选项。点击打开,会出现如图所示界面,通过这两个…

    2022年9月21日
    11.6K00
  • Vue3中toRef和toRefs函数怎么使用

    toRef 函数使用 首先呢, toRef 函数有两个参数。 toRef(操作对象, 对象属性) 好,接下来我们使用 toRef 函数写一个案例,还是和以前一样,页面展示一个用户的名称和年纪。 <template> <div> <h2>toRef toRefs 函…

    2022年9月21日
    65600
  • windows KB4520010更新了哪些内容

    KB4520010主要更新方面: – 更新以提高使用 Internet Explorer 和 Microsoft Edge 时的安全性。 – 用于验证用户名和密码的更新。 – 用于存储和管理文件的更新。 KB4520010改进修补程序: 解决了安全公告 CVE-2…

    2022年9月1日
    34500
  • css选择器可以是标签的名字吗

    可以是;元素选择器就是使用HTML标签名的。在css中,元素选择器就是通过HTML页面的元素(标签)名定位具体HTML元素,语法结构为“元素名 {属性:属性值;}”;如果元素选择器单独使用的话,会定位当前HTML页面中所有该元素名的元素。 本教程操作环境:windows7系统、CSS3&&a…

    2022年9月22日
    55900
  • windows KB4524151更新了哪些内容

    KB4524151补丁主要更新: 更新可能导致打印作业失败的打印假脱机程序服务的间歇性问题。 KB4524151改进与修补程序: 此安全更新程序包括质量改进。 关键更改包括: ● 解决可能导致打印作业失败的打印假脱机程序服务的间歇性问题。 ● 某些应用程序可能关闭或生成错误,例如远程过程调用 (RP…

    2022年9月1日
    37300
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部