我的是使用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