SpringBoot环境Druid数据源使用及特点

下面是关于SpringBoot环境中Druid数据源使用及特点的详细攻略。

1. 什么是Druid

Druid是阿里巴巴开源的数据连接池。相比于传统的连接池,Druid具有更好的扩展性和稳定性。同时,它还提供了多种功能强大的监控和统计特性,如监控SQL执行情况、打印SQL慢日志等。

2. 如何在SpringBoot中使用Druid数据源

2.1 引入依赖

首先,在项目的pom.xml文件中添加Druid的依赖:

<!--Druid-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

2.2 配置数据源

接下来,需要在配置文件中配置Druid的数据源。在application.yml或者application.properties文件中添加以下配置项:

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
    username: root
    password: root
    # 配置Druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    filters: stat,wall,log4j # 配置Druid监控及防火墙功能
    maxActive: 20 #最大连接池数量
    initialSize: 1 #初始化连接池数量
    maxWait: 60000 #获取连接的最大等待时间
    minIdle: 1 #最小连接池数量
    timeBetweenEvictionRunsMillis: 60000 #检测空闲连接的间隔时间
    minEvictableIdleTimeMillis: 300000 #连接最小空闲时间, 超出时间会被关闭
    validationQuery: SELECT "x" FROM DUAL #验证连接是否有效的SQL语句
    testWhileIdle: true #在归还连接到连接池时是否验证连接是否有效

2.3 代码中使用Druid数据源

在SpringBoot启动类中添加@EnableTransactionManagement注解启用Druid的事务支持:

@EnableTransactionManagement
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

在DAO层的代码中,通过@Autowired注解注入DataSource对象,直接使用即可,如下所示:

@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private DataSource dataSource;
    // ...
}

3. Druid数据源的特点

除了连接池的基本功能,Druid还提供了以下特点:

  • 监控SQL执行情况:Druid内置提供了强大的监控功能,可以监控应用中数据库连接池和SQL的情况,包括可疑的SQL、慢SQL、并发数量等。在应用运行时,可以通过访问http://localhost:8080/druid/index.html 查看监控数据和统计分析。
  • 防止SQL注入攻击:Druid提供了防火墙功能,可以防止SQL注入攻击。
  • 壮大运维能力:Druid提供了强大的统计和日志查看功能,可以用于监控应用、定制运维消息,同时支持通过JMX实现监控数据的远程管理等。

4. 提示:Druid数据源的使用示例

下面给出两条Druid数据源使用的代码示例,供参考:

示例1:查询表中的某些数据

@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private DataSource dataSource;

    @Override
    public List<User> getUserList() {
        try (Connection connection = dataSource.getConnection();
             PreparedStatement statement = connection.prepareStatement("SELECT * FROM user")) {
            ResultSet resultSet = statement.executeQuery();
            List<User> userList = new ArrayList<>();
            while (resultSet.next()) {
                User user = new User();
                user.setId(resultSet.getLong("id"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                userList.add(user);
            }
            return userList;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

示例2:使用注解@Transactional控制事务

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Override
    @Transactional
    public void addUser(User user) {
        userDao.addUser(user);
        throw new RuntimeException("something wrong");
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot环境Druid数据源使用及特点 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码

    要实现jQuery EasyUI datagrid在翻页以后仍能记录被选中行所对应数据的功能,我们可以通过以下步骤实现: 步骤一:记录选中行的数据 使用EasyUI datagrid中提供的onSelect和onUnselect事件,分别在用户选中和取消选中某一行的时候,记录该行所对应的数据,并将数据存储在一个数组中。具体代码如下: var selected…

    Java 2023年6月15日
    00
  • SpringBoot属性注入的两种方法

    SpringBoot提供了两种属性注入的方式:基于映射文件和基于注解。 基于映射文件 基于映射文件的方式,一般是将属性配置在application.properties或application.yml文件中,然后在程序中通过@Value注解进行注入。 1. application.properties方式 在application.properties文件中…

    Java 2023年5月15日
    00
  • Java消息队列的简单实现代码

    要讲解完整的“Java消息队列的简单实现代码”的攻略,需要分以下几个部分: 简单介绍Java消息队列的概念和作用; 规划Java消息队列代码的流程和所需的库; 根据流程编写代码,包括发送消息、接收消息和处理消息的功能; 编写示例代码来说明Java消息队列的使用方法。 下面将分部分逐一讲解。 简单介绍Java消息队列的概念和作用 Java消息队列,简称MQ,是…

    Java 2023年5月19日
    00
  • Java 如何优雅的抛出业务异常

    Java 抛出业务异常是我们在日常开发中难免会遇到的问题,如何优雅的抛出业务异常已成为现代开发者必须掌握的技能之一。接下来,我将详细讲解 Java 如何优雅的抛出业务异常的完整攻略。 1. 异常的定义 在 Java 中,可以通过继承 Exception 或者 RuntimeException 来定义自己的业务异常。一般来说,Exception 异常适用于业务…

    Java 2023年5月28日
    00
  • Spring七大组件是哪些以及作用

    Spring是一个流行的Java应用程序框架,它提供了一组可重用的组件来构建企业级应用程序。这些组件通常被称为Spring七大组件,这些组件包括: Spring核心容器:它是Spring框架的基础,提供了依赖注入(DI)和控制反转(IoC)功能。它甚至可以使应用程序更容易与不同的数据源集成。 Spring AOP:面向切面编程(AOP)是Spring框架的另…

    Java 2023年5月19日
    00
  • 基于Mongodb分布式锁简单实现,解决定时任务并发执行问题

    前言 我们日常开发过程,会有一些定时任务的代码来统计一些系统运行数据,但是我们应用有需要部署多个实例,传统的通过配置文件来控制定时任务是否启动又太过繁琐,而且还经常出错,导致一些异常数据的产生 网上有很多分布式锁的实现方案,基于redis、zk、等有很多,但是我的就是一个用了mysql和mongo的小应用,不准备引入其他三方中间件来解决这个问题,撸一个简单的…

    Java 2023年4月19日
    00
  • Java实现二维码QRCode的编码和解码与示例解析

    Java实现二维码QRCode的编码和解码 1. QRCode介绍 QRCode全称Quick Response Code,是由日本的Denso Wave公司于1994年发明的一种二维码。相比于传统的条形码,QRCode可以存储更多的信息,并且具备了自我校验的能力,容错率也更高,适用于快速读取信息的场合。目前QRCode已经广泛应用于各方面,如支付、门禁、会…

    Java 2023年5月20日
    00
  • MyBatis @Select注解介绍:基本用法与动态SQL拼写方式

    下面我来详细讲解”MyBatis @Select注解介绍:基本用法与动态SQL拼写方式”。 什么是@Select注解? @Select注解是MyBatis框架中用于查询的注解之一,用于执行查询操作的SQL语句。在使用MyBatis进行数据库操作时,我们可以使用@Select注解来替代在XML文件中编写SQL语句的方式,这样可以使得代码更加简洁和清晰。 @Se…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部