(四)Spring Boot学习——整合修改使用druid连接池

我的是使用springboot3的,对应的有整合的druid-spring-boot-3-starter的jar实现对springboot3的兼容。

<!--******************数据库相关配置************************-->
<!-- 1.配置数据库相关的jar包,连接池使用druids上,并引入整合springboot的包-->
 <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.33</version>
 </dependency>
 <!--1.1mysql-connector-java传递的依赖项有漏洞,原来版本为3.11开始的,本处指定使用无漏洞版本-->
 <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>4.28.2</version>
 </dependency>
 <!--2.保证 Spring JDBC 的依赖健全 -->
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
      <version>3.3.5</version>
 </dependency>
 <!--3.专门的druid集成包,为springboot3提供更好兼容性,已经包含了druid-->
  <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-3-starter</artifactId>
        <version>1.2.20</version>
  </dependency>           

注意啊。虽然是为了兼容springboot3的,但是还是存在不兼容问题。我的就是使用1.2.23死活就是不生效,然后改成druid-spring-boot-3-starter是1.2.20就可以了。

因为做了兼容,不需要手动写class配置了。在properties中写如下配置:

#=======================配置数据库连接=================================================================================
# 本项目使用druid连接池,需要提前指定datasource的type
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 数据库source基础的配置内容,驱动、url及用户名密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/youdatabase?useUnicode=true&useSSL=false&autoReconnect=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
spring.datasource.username=youusername
spring.datasource.password=youpassword
# Druid 专属配置
# 避坑指示,springboot3有兼容支持的druid-spring-boot-3-start的包,
# 但是建议使用低版本的包,使用最新的容易出问题,本次就是报错故障调试好久。(要考虑版本兼容问题)
# 另外druid-spring-boot-3-start支持自动话配置,不需要手动配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
# druid-spring-3自动支持,StatViewServlet 配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
spring.datasource.druid.stat-view-servlet.deny=
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123456
# druid-spring-3自动支持,WebStatFilter 配置
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/*
# ============MyBatis 配置================我使用了MybatisConfig.java,配置,这里的配置会不生效
#mybatis.mapper-locations=classpath:mapper/*.xml
#mybatis.config-location=classpath:mybatis-config.xml
#mybatis.type-aliases-package=com.lz.boot.lzwork.entity

配置mybatis的事务管理。因为需要通过mybatisConfig.java进行配置,会覆盖application.properties中的mybatis配置. 在service或者dao中的方法上添加@Transactional就会开启事务管理了

package com.xx.boot.xxx.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.transaction.SpringManagedTransactionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
@MapperScan("com.lz.boot.lzwork.dao")   //使用了mapperscan就不用再每个Mapper接口上添加@Mapper注解
//@EnableTransactionManagement //开启事务管理   Spring Boot 自动配置已经默认开启了事务管理。
public class MyBatisConfig {
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);

        // 关键:让 MyBatis 使用 Spring 事务管理
        sessionFactoryBean.setTransactionFactory(new SpringManagedTransactionFactory());
        //添加MyBatis 配置文件
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml"));
        sessionFactoryBean.setConfigLocation(resolver.getResource("classpath:mybatis-config.xml"));
        sessionFactoryBean.setTypeAliasesPackage("com.xx.boot.xxx.entity");

        return sessionFactoryBean.getObject();
    }
}

最后就是最主要使用druid的原因了,他的性能监控。http://localhost:8080/druid/login.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值