MySQL 依赖为何设定为运行时范围而非编译时范围?

聖光之護
发布: 2024-11-05 18:28:46
原创
936人浏览过

mysql 依赖为何设定为运行时范围而非编译时范围?

mysql 依赖为何设定为运行时范围?

问题:mysql 依赖的范围为什么设定为运行时,而不是编译时?如果打包时不包含 mysql 依赖,那么发布后的项目如何连接数据库?

回答:

jdbc 通常情况下,编码时只依赖于 jdbc 接口,而不直接依赖于 mysql jdbc 驱动。在连接 mysql 时,我们会使用类似以下的代码:

Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, username, password);
登录后复制

我们将使用反射方法 class.forname 在运行时从类路径中加载 mysql jdbc 驱动,后续调用时没有任何使用 mysql jdbc 特定方法,而是使用 jdbc 接口。

ViiTor实时翻译
ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116
查看详情 ViiTor实时翻译

因此,jdbc 驱动不是编译依赖(compile scope),因为我们的代码没有直接使用 jdbc 驱动的特定方法,所以编译时不需要加载 jdbc 驱动。jdbc 接口才是编译依赖,而 jdbc 驱动属于运行依赖(runtime scope)。

在声明运行依赖时,不会在编译过程中将依赖添加到类路径中,但会在打包时将其加入。因此,无需担心,jdbc 驱动应该设定为运行时依赖。

编译依赖指的是编译时需要该依赖,通常编译依赖也是运行依赖。另一方面,maven/gradle 中的编译依赖通常在编译后也包含在 fat jar 中,这意味着编译依赖隐含包含了运行依赖。不过,某些依赖也可能是 compileonly 依赖,例如用于处理注释的处理器,它们仅在编译时需要,在运行时不需要。

以上就是MySQL 依赖为何设定为运行时范围而非编译时范围?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号