目录
- 2.9、配置数据源
- 2.9.1、HikariCP
- 2.9.2、Druid
- 1、配置
- 2、开启监控
2.9、配置数据源
2.9.1、HikariCP
Springboot内置的JDBC启动器默认的数据源为:HikariCP
- 导入JDBC的启动器
<!--JDBC启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
- yml文件中配置数据源
spring:
#数据源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: 123456
- 测试
Spring Boot 提供了一个名为 JdbcTemplate 的轻量级数据访问工具,它是对 JDBC 的封装。Spring Boot 对 JdbcTemplate 提供了默认自动配置,可以直接使用 @Autowired 或构造函数将它注入到 bean 中使用。
@SpringBootTest
public class JdbcTest {
@Autowired
private DataSource dataSource;
@Autowired
JdbcTemplate jdbcTemplate;
@Test
public void test() throws SQLException {
System.out.println("默认数据源为:" + dataSource.getClass());
String username = jdbcTemplate.queryForObject("select username from `user` where user_id=1",String.class);
System.out.println(username);
}
}
2.9.2、Druid
1、配置
Druid 是阿里推出的,支持所有 JDBC(Oracle、MySQL、SQL Server 和 H2等 )兼容的数据库连接池。Druid 结合了 C3P0、DBCP 和 PROXOOL 等数据源产品的优点,同时还加入了强大的监控功能。通过 Druid 的监控功能,可以实时观察数据库连接池和 SQL 的运行情况,帮助用户及时排查出系统中存在的问题。
- 导入Druid 的依赖
<!--JDBC启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql的依赖-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
<!--德鲁伊连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
- yml文件中配置属性
spring:
#数据源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource #配置druid,默认为HikariCP
# 德鲁伊数据池的一些专有配置
druid:
initial-size: 5 #初始化连接大小
min-idle: 5 #最小、大连接池数量
max-active: 20
max-wait: 60000 #获取连接时最大等待时间,单位毫秒
time-between-eviction-runs-millis: 60000 #多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
validation-query: SELECT 1 FROM DUAL #测试连接的有效性
#配置从连接池获取连接时和向连接池归还连接时,是否检查连接有效性。
test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
test-on-borrow: false #获取连接时执行检测,建议关闭,影响性能
test-on-return: false #归还连接时执行检测,建议关闭,影响性能
pool-prepared-statements: false #是否开启PSCache,oracle建议开启,mysql5.5以下的版本建议关闭
max-open-prepared-statements: -1 #大于0时, poolPreparedStatements自动修改为true。
max-pool-prepared-statement-per-connection-size: 20 #开启poolPreparedStatements后生效
filters: stat,wall,slf4j #配置监控统计拦截的filters:stat(监控统计)、wall(放sql注入)、slf4j(日志)
use-global-data-source-stat: false # 合并多个DruidDataSource的监控数据
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
#内置监控页面:http://localhost:8080/druid
stat-view-servlet:
enabled: true #是否开启内置监控页面,默认值为 false
url-pattern: '/druid/*' #StatViewServlet 的映射路径,即内置监控页面的访问地址
reset-enable: true #是否启用重置按钮
login-username: admin #内置监控页面的登录页用户名 username
login-password: admin #内置监控页面的登录页密码 password
#开启 SQL 监控
web-stat-filter:
enabled: true #是否开启内置监控中的 Web-jdbc 关联监控的数据
url-pattern: '/*' #匹配路径
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' #排除路径
session-stat-enable: true #是否监控session
aop-patterns: com.yu.springboot.* #Spring监控AOP切入点,如x.y.z.abc.*,配置多个英文逗号分隔
# 对配置已开启的 filters 即 stat(sql 监控) wall(防火墙)
filter:
#配置StatFilter (SQL监控配置)
stat:
enabled: true #SQL 监控
slow-sql-millis: 1000 #慢查询
log-slow-sql: true #慢查询SQL
#配置WallFilter (开启防火墙)
wall:
enabled: true #开启防火墙
config:
update-allow: true #允许更新
drop-table-allow: false #禁止删表
insert-allow: true #允许插入
delete-allow: true #删除数据
- 测试:再运行上面的Test,发现现在变成了druil了
2、开启监控
Druid 内置提供了一个 StatViewServlet ,这个 Servlet 可以开启 Druid 的内置监控页面功能, 展示 Druid 的统计信息,它的主要用途如下:
- 提供监控信息展示的 html 页面
- 提供监控信息的 JSON API
启动项目后,打开监控页面:http://localhost:8080/druid/index.html