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