在 spring 的 jdbc 代码模块中,jdbc 的配置包括两个:
-
JdbcProperties
: prefix 为spring.jdbc.*
-
DataSourceProperties
: prefix 为spring.datasource.*
JdbcProperties
下面是 JdbcProperties,对于这几个配置,着实看起来有点陌生
@ConfigurationProperties(prefix = “spring.jdbc”)
public class JdbcProperties {
private final Template template = new Template();
public static class Template {
private int fetchSize = -1;
private int maxRows = -1;
@DurationUnit(ChronoUnit.SECONDS)
private Duration queryTimeout;
JdbcProperties 配置通过代码分析来看,目前只有在 JdbcTemplate 中使用了;也就是说,如果你的项目中没有使用 JdbcTemplate 的话,那 spring.jdbc.template.*
是无用的。抛个问题:如果使用 JdbcTemplate, 并且将 queryTimeout 配置成 -1 是不是一定会超时?为 0 呢?答案肯定是 否;
jdbc 的这几个参数从代码看,最终都是为底层 Statement 服务的,这里不具体介绍执行过程及原理;这里放一个之前看到的一篇查询超时问题的排查,以供各位理解
-
fetchSize: 从数据库和结果集查询时,每次拉取指定 fetchSize 大小的数据,循环去取,直到取完。
-
maxRows:底层
Statement
对象生成的所有ResultSet
对象可以包含的最大行数限制,最大以后的数据会被丢掉;这个参数设置应该是为了避免在结果集非常大的时候导致内存扛不住。
DataSourceProperties
这个比较容易理解,就是数据源配置,常见的 url, driverClassName 都是在这里配置的。
@ConfigurationProperties(prefix = “spring.datasource”)
public class DataSourceProperties implements BeanClassLoaderAware, InitializingBean {
private ClassLoader classLoader;
// datasource 名字,如果使用 embedded database,默认名是 “testdb”
private String name;
// 是否要随机创建一个 datasource name
private boolean generateUniqueName = true;
// 具体 connection pool 实现类的全限定名
private Class<? extends DataSource> type;
// 具体 JDBC driver 实现类的全限定名
private String driverClassName;
/**
- JDBC URL of the database.
*/
private String url;
/**
- Login username of the database.
*/
private String username;
/**
- Login password of the database.
*/
private String password;
/**
- 数据源的JNDI位置,如果使用这个,url,username 这些就不需要了。(没用过)
*/
private String jndiName;
// 初始化模式,比如是否使用可用的 DDL and DML 脚本
private DataSourceInitializationMode initializationMode = DataSourceInitializationMode.EMBEDDED;
/**
-
在DDL 或 DML脚本中使用的平台 (such as schema-${platform}.sql or
-
data-${platform}.sql).
*/
private String platform = “all”;
// Schema (DDL) 脚本的资源位置.
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识
一线互联网P7面试集锦+各种大厂面试集锦
学习笔记以及面试真题解析
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
2195217335)]
学习笔记以及面试真题解析
[外链图片转存中…(img-2BwTQKVK-1712195217335)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!