Java/Spring项目的包开头为什么是com?
Java/Spring项目的包开头为什么是com?
- 下面是一个使用Maven构建的项目初始结构
src/ main/ java/ --> Java 源代码 com.example/ --->为什么这里是com开头 resources/ --> 资源文件 (配置、静态文件等) test/ java/ --> 测试代码 resources/ --> 测试资源文件
通过具体的例子理解
- com.ruoyi或许不好理解,那你反转一下 ruoyi.com 这下是不是就好理解了?ruoyi.com 不就成了若依的官网了吗(注:若依官网是ruoyi.vip,因为com是商业组织的结尾,所以若依域名不是ruoyi.com)!
- 这个叫域名反转功能,通过域名反转,你可以很快捷的明白生产公司在哪里
- 域名反转规则是 Java 中的包命名惯例,它的核心思想是使用公司的域名反转(比如 com.example)作为包的前缀来确保包名的唯一性。这个规则来源于防止不同公司或组织开发的项目之间发生命名冲突。
- 域名:`example.com` - 包名:`com.example`
为什么反转而不是直接使用域名?
域名反转的原因主要是因为包名的标准书写方式:包名从最顶层到最具体的层次结构依次递增。在域名反转规则中:
- com 是顶层包,表示这是一个商业(commercial)域名。
- example 是次级包,代表公司的名称或组织名称。
- 后续的包名逐渐细化,表示项目、模块或者功能。
这么做的好处
1. 避免命名冲
- 如果所有人都使用类似的简单包名(如 utils 或 service),那么当多个项目被集成到一起时,可能会发生命名冲突,导致编译错误或者功能异常。通过使用域名反转(如 com.example.utils 和 org.somecompany.utils),每个公司的包名都是唯一的,即使包的功能相似,也不会产生冲突。
- 这点其实很多小伙伴都有体会,随着代码开发水平的提高,使用轮子是一个常见的事,但轮子用多了,就能发现自己项目中充斥这一堆相同的东西–来自不同轮子。
2. 全球唯一
公司拥有独特的域名,反转后的包名前缀自然是唯一的。每个公司都可以根据自己的域名创建不重复的包结构,确保包在全世界范围内的唯一性。例如:
- com.google.android
- com.microsoft.azure
3. 提高代码的可读性
通过包名,开发者可以立即知道某个代码片段来自哪个公司或者项目。比如 com.example.project 可以立即指出代码来自 example.com,而 org.apache.commons 则来自 Apache 的项目。
4. 逻辑分层
域名反转后,包名可以继续向下扩展,用来表示不同的模块或功能。例如:
- com.example.app.controller:example公司的app的控制器层代码
- com.example.app.service:example公司的app的业务逻辑层代码
- com.example.app.model:example公司的app的数据模型
总结与问题
- 这个包名,从诞生开始就考虑到了很多东西(发布唯一性、代码可读性等)。看到包名,你也就知道很多信息啦。
- 最后,留下一个问题,如果我的网址叫qiuner.top 那包名能不能叫top.qiuner
可读性等)。看到包名,你也就知道很多信息啦。
- 最后,留下一个问题,如果我的网址叫qiuner.top 那包名能不能叫top.qiuner呢?
你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹
如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。
代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍
如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号
更多专栏:-
📊 一图读懂系列
-
📝 一文读懂系列
-
⚽ Uniapp
-
🌟 持续更新
-
🤩 Vue项目实战
-
🚀 JavaWeb
-
🎨 设计模式
-
📡 计算机网络
-
🎯 人生经验
-
🔍 软件测试
掘金账号 CSDN账号
感谢订阅专栏 三连文章
-
- 最后,留下一个问题,如果我的网址叫qiuner.top 那包名能不能叫top.qiuner呢?
- 这点其实很多小伙伴都有体会,随着代码开发水平的提高,使用轮子是一个常见的事,但轮子用多了,就能发现自己项目中充斥这一堆相同的东西–来自不同轮子。
- 如果所有人都使用类似的简单包名(如 utils 或 service),那么当多个项目被集成到一起时,可能会发生命名冲突,导致编译错误或者功能异常。通过使用域名反转(如 com.example.utils 和 org.somecompany.utils),每个公司的包名都是唯一的,即使包的功能相似,也不会产生冲突。
- com.ruoyi或许不好理解,那你反转一下 ruoyi.com 这下是不是就好理解了?ruoyi.com 不就成了若依的官网了吗(注:若依官网是ruoyi.vip,因为com是商业组织的结尾,所以若依域名不是ruoyi.com)!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。