Java/Spring项目的包开头为什么是com?

Java/Spring项目的包开头为什么是com?

  • 下面是一个使用Maven构建的项目初始结构
src/main/java/         --> Java 源代码com.example/ --->为什么这里是com开头resources/    --> 资源文件 (配置、静态文件等)test/java/         --> 测试代码resources/    --> 测试资源文件

通过具体的例子理解

image-20240908105236127

  • com.ruoyi或许不好理解,那你反转一下 ruoyi.com 这下是不是就好理解了?ruoyi.com 不就成了若依的官网了吗(注:若依官网是ruoyi.vip,因为com是商业组织的结尾,所以若依域名不是ruoyi.com)!
    • 这个叫域名反转功能,通过域名反转,你可以很快捷的明白生产公司在哪里
  • 域名反转规则是 Java 中的包命名惯例,它的核心思想是使用公司的域名反转(比如 com.example)作为包的前缀来确保包名的唯一性。这个规则来源于防止不同公司或组织开发的项目之间发生命名冲突。
- 域名:`example.com`
- 包名:`com.example`

为什么反转而不是直接使用域名?

域名反转的原因主要是因为包名的标准书写方式:包名从最顶层到最具体的层次结构依次递增。在域名反转规则中:

  • com 是顶层包,表示这是一个商业(commercial)域名。
  • example 是次级包,代表公司的名称或组织名称。
  • 后续的包名逐渐细化,表示项目、模块或者功能。

这么做的好处

1. 避免命名冲

  • 如果所有人都使用类似的简单包名(如 utilsservice),那么当多个项目被集成到一起时,可能会发生命名冲突,导致编译错误或者功能异常。通过使用域名反转(如 com.example.utilsorg.somecompany.utils),每个公司的包名都是唯一的,即使包的功能相似,也不会产生冲突。

image-20240923092507227

  • 这点其实很多小伙伴都有体会,随着代码开发水平的提高,使用轮子是一个常见的事,但轮子用多了,就能发现自己项目中充斥这一堆相同的东西–来自不同轮子。

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呢?

image-20240908140153588

img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号

更多专栏:
  • 📊 一图读懂系列

  • 📝 一文读懂系列

  • ⚽ Uniapp

  • 🌟 持续更新

  • 🤩 Vue项目实战

  • 🚀 JavaWeb

  • 🎨 设计模式

  • 📡 计算机网络

  • 🎯 人生经验

  • 🔍 软件测试

掘金账号 CSDN账号

感谢订阅专栏 三连文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543062.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

3D建模:Agisoft Metashape Professional 详细安装教程分享 Mac/win

Agisoft Metashape中文版(以前称为 PhotoScan)是一款独立软件产品,可对数字图像进行摄影测量处理并生成 3D 空间数据,用于 GIS 应用程序、文化遗产文献和视觉效果制作以及各种比例的物体的间接测量。 明智地实施数字摄影测量技术…

Windows 离线安装显示驱动

下载驱动人生,查看需要安装的驱动版本 驱动人生 驱动人生官网-显卡驱动_打印机驱动_网卡驱动_声卡驱动等驱动程序下载及检测平台驱动人生是一款提供电脑驱动下载和安装自动化的软件,通过驱动人生可一键安装显卡驱动、网卡驱动、声卡驱动、打印机驱动、…

Unity中Rigidbody 刚体组件和Rigidbody类是什么?

Rigidbody 刚体组件 Rigidbody 是 Unity 中的一个组件,它可以让你的游戏对象像真实世界中的物体一样移动和碰撞。想象一下,你有一个小球,你希望它像真实世界中的球一样滚动、弹跳和碰撞,那么你就可以给这个小球添加一个 Rigidbod…

R语言中的shiny框架

R语言中的shiny框架 Shiny 的基本概念基本用法示例常见用法示例1. 输入控件2. 输出控件3. 动态 UI4. 数据传递和反应式编程 高级功能1. 使用 shinyjs2. 使用 shinythemes Shiny 是一个 R 语言的框架,用于构建交互式的网页应用,可以让用户以最少的 HTML、…

uniapp出现 下拉框等组件被遮挡 的分析

目录 1. 问题所示2. 代码复现3. 解决方法3.1 下拉框被遮挡3.2 uni-collapse-item 无法下拉的问题 1. 问题所示 下拉框被遮挡的问题&#xff1a; uni-collapse-item组件无法下拉的问题&#xff1a; 2. 代码复现 博主的代码精简如下&#xff1a; <template><view>…

离职员工客户如何管理?解锁2024企业微信新功能

公司里员工来来去去很正常&#xff0c;但每次有人走&#xff0c;老板们都会头疼&#xff0c;因为客户信息得有人接着管。客户对公司来说太重要了&#xff0c;不能丢。2024年&#xff0c;企业微信出了个新招&#xff0c;就是员工离职后&#xff0c;客户信息可以轻松转给新来的员…

kalman滤波三:时序数据预测(一维kalman滤波)

文章目录 原理kalman滤波一&#xff1a;基础理论kalman滤波二&#xff1a;二维目标跟踪 一维kalman滤波状态变量测量值状态转移矩阵 示例代码&#xff1a;运行结果&#xff1a;真实场景示例 以下是一个测距的应用&#xff0c;在图像上计算目标离参考点的距离&#xff0c;测距的…

如何删除链表的中间节点和a/b处的节点?

文章目录 删除中间节点删除 a/b 处的节点 示例定义链表节点结构删除中间节点删除 a/b 处的节点 注意事项 Python 实现案例创建链表删除中间节点删除 a/b 处的节点测试代码示例代码完整版测试输出 在链表中删除中间节点或者特定位置&#xff08;如 a/b 处&#xff09;的节点涉及…

学习干货HVV必学远控工具及Webshell流量合集分析(建议收藏+附面试题)

0x01 前言 本篇文章为各位师傅总结了一些当下流行的Webshell远程工具及其中的流量分析&#xff0c;方便在平时监测、hvv、攻防演练中进行及时发现、阻拦回溯等、在某些比赛上可能也会有类似的流量分析题目&#xff0c;根据工具的一些流量特征进行说明&#xff0c;其中会附带一…

如何融合文本信息提高时序预训练模型?

今天小编给大家介绍两篇联合文本和时序数据进行预训练的文章。 UniTime: A Language-Empowered Unified Model for Cross-Domain Time Series Forecasting 文献地址&#xff1a;https://arxiv.org/pdf/2310.09751.pdf 代码地址&#xff1a;https://github.com/liuxu77/UniTim…

国产 AI 大模型成果展示,囊括 12 大金融应用场景!

前言 随着人工智能技术的飞速发展&#xff0c;国产AI大模型在医疗健康领域的应用日益广泛&#xff0c;正在逐步改变传统的医疗服务模式&#xff0c;提升医疗服务的质量和效率。以下是对国产AI大模型在医疗领域应用的典型案例盘点&#xff0c;覆盖了十大医疗应用场景。 01 智…

治愈系视频素材哪里找?非常优秀的治愈系素材分享

在快节奏的现代生活中&#xff0c;寻找心灵的慰藉成为了一个日益重要的话题。治愈系视频以其温暖人心的内容和独特的魅力&#xff0c;为观众提供了一种减压和放松的方式。要制作出触动人心的治愈系视频&#xff0c;首先需要挑选合适的视频素材。以下是几个优质的治愈系视频素材…

使用build_chain.sh离线搭建匹配的区块链,并通过命令配置各群组节点的MySQL数据库

【任务】 登陆Linux服务器&#xff0c;以MySQL分布式存储方式安装并部署如图所示的三群组、四机构、 七节点的星形组网拓扑区块链系统。其中&#xff0c;三群组名称分别为group1、group2和group3&#xff0c; 四个机构名称为agencyA、agencyB、agencyC、agencyD。p2p_port、cha…

粗绿激光模组使用优势有哪些

在当今高科技飞速发展的时代&#xff0c;激光技术以其精准、高效、稳定的特性&#xff0c;在众多领域中展现出了非凡的应用价值。其中&#xff0c;粗绿激光模组作为激光技术的重要分支&#xff0c;凭借其独特优势&#xff0c;在众多行业中脱颖而出&#xff0c;成为推动产业升级…

格密码(一)

什么是格&#xff1f; 可以简单地把“格”想象成一个用多个点组成的网格&#xff0c;这个网格可以存在于二维、三维甚至更高维的空间中。每个格点都是由一组基向量&#xff08;比如二维空间中的两个基向量&#xff09;通过整数倍的线性组合得到的。 二维格的例子&#xff1a;…

大坝可视化监控:实时安全保障

利用图扑可视化技术实时监控大坝结构和运行状态&#xff0c;及时识别潜在风险&#xff0c;提升管理效率&#xff0c;确保大坝安全稳定运行和资源的高效利用。

实时数据的处理一致性

实时数据一致性的定义以及面临的挑战‍‍‍‍‍ 数据一致性通常指的是数据在整个系统或多个系统中保持准确、可靠和同步的状态。在实时数据处理中&#xff0c;一致性包括但不限于数据的准确性、完整性、时效性和顺序性。 下图是典型的实时/流式数据处理的流程&#xff1a; 1、…

基于单片机多点无线温度监控系统设计

本设计STC89C52RC单片机作为主控芯片&#xff0c;能够远程监控多个位置的温度变化。使用一个主机来接收和监控三个从机收集到的温度信息&#xff0c;利用DS18B20温度传感器采集温度信息&#xff0c;采用GL24S无线通讯模块将数据传输给主机进行接收&#xff0c;信息显示在主机连…

SM2无证书及隐式证书公钥机制签名和加密过程详解(一)

前面介绍SM2无证书及隐式证书公钥机制下用户公私密钥对的Python实现&#xff08;具体参看SM2隐式证书用户公私钥生成python代码实现_sm2 python 密钥生成-CSDN博客&#xff09;&#xff0c;可以看到需由用户和KGC&#xff08;可信密钥生成中心&#xff09;共同参与才能计算得到…

钢表面缺陷识别

钢表面缺陷识别是指通过计算机视觉技术对钢材表面缺陷进行检测和分类的过程。这一技术在钢铁制造行业具有重要的工业价值&#xff0c;旨在提高产品质量、降低生产损失以及提升生产效率。钢表面缺陷可能包括裂纹、凹坑、气泡等&#xff0c;这些瑕疵会影响产品的性能和安全性&…