当前位置: 首页 > news >正文

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账号

感谢订阅专栏 三连文章

相关文章:

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

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

深度学习自编码器 - 随机编码器和解码器篇

序言 在深度学习领域,自编码器作为一种无监督学习技术,凭借其强大的特征表示能力,在数据压缩、去噪、异常检测及生成模型等多个方面展现出独特魅力。其中,随机编码器和解码器作为自编码器的一种创新形式,进一步拓宽了…...

Spring IoC DI

Spring 框架的核心是其控制反转(IoC,Inversion of Control)和依赖注入(DI,Dependency Injection)机制。这些概念是为了提高代码的模块化和灵活性,进而简化开发和测试过程。下面将详细介绍这两个…...

[数据集][目标检测]无人机飞鸟检测数据集VOC+YOLO格式6647张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):6647 标注数量(xml文件个数):6647 标注数量(txt文件个数):6647 标注…...

Vue 中 watch 的使用方法及注意事项

前言 Vue 的 Watch 是一个非常有用的功能,它能够监听 Vue 实例数据的变化并执行相应的操作。本篇文章将详细介绍 Vue Watch 的使用方法和注意事项,让你能够充分利用 Watch 来解决 Vue 开发中的各种问题。 1. Watch 是什么? 1.1 Watch 的作…...

情指行一体化平台建设方案和必要性-———未来之窗行业应用跨平台架构

一、平台建设必要性 以下是情指行一体化平台搭建的一些必要性: 1. 提高响应速度 - 实现情报、指挥和行动的快速协同,大大缩短从信息获取到决策执行的时间,提高对紧急情况和突发事件的响应效率。 2. 优化资源配置 - 整合各类资源信…...

窗口框架frame(HTML前端)

一.窗口框架 作用&#xff1a;将网页分割为多个HTML页面&#xff0c;即将窗口分为多个小窗口&#xff0c;每个小窗口可以显示不同的页面&#xff0c;但是在浏览器中是一个完整的页面 基本语法 <frameset cols"" row""></frameset><frame…...

51单片机——数码管

一、数码管原理图 我们发现&#xff0c;总共有8个数码管。 它们的上面接8个LED&#xff0c;用来控制选择哪个数码管。例如要控制第三个数码管&#xff0c;就让LED6为0&#xff0c;其他为1&#xff0c;那LED又接到哪呢&#xff1f; 二、LED 由图可以看出&#xff0c;这个一个1…...

`re.compile(r“(<.*?>)“)` 如何有效地从给定字符串中提取出所有符合 `<...>` 格式的引用

regexp re.compile(r"(<.*?>)") 这行代码是在Python中使用正则表达式的一个示例&#xff0c;具体含义如下&#xff1a; re.compile(): 这个函数来自Python的 re&#xff08;正则表达式&#xff09;模块&#xff0c;用于将一个正则表达式模式编译成一个正则表…...

算法打卡:第十一章 图论part01

今日收获&#xff1a;图论理论基础&#xff0c;深搜理论基础&#xff0c;所有可达路径&#xff0c;广搜理论基础&#xff08;理论来自代码随想录&#xff09; 1. 图论理论基础 &#xff08;1&#xff09;邻接矩阵 邻接矩阵存储图&#xff0c;x和y轴的坐标表示节点的个数 优点…...

为C#的PetaPoco组件增加一个批量更新功能(临时表模式)

总有一些数据是需要批量更新的&#xff0c;并且更新的字段&#xff0c;每个数据都不一样。 为了实现这样一个功能&#xff0c;写了这样一个方法&#xff1a; using System.Linq.Expressions; using System.Reflection; using System.Text; using NetRube.Data; using PetaPoc…...

Spring实战——入门讲解

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 Spring介绍 Spring实战的入门讲解主要涵盖了Spring框架的基本概念、核心功能以及应用场景。以下是关于Spring实战入门的具体介绍&#xff1a; Spring框架概述&#xff1a;Spring是一个轻量级的Java开发框架…...

MTK芯片机型的“工程固件” 红米note9 5G版资源预览 写入以及改写参数相关步骤解析

小米机型:小米5 小米5x 米6 米6x 米8 米9 米10系列 米11系列 米12系列 mix mix2 mix2s mix3 max max2 max3 note3 8se 9se cc9系列 米play 平板系列等分享 红米机型:红米note4 红米note4x 红米note5 红米note6 红米note7 红米note8 红米note8pro 红米s2 红米note7pro 红米…...

[Golang] Context

[Golang] Context 文章目录 [Golang] Context什么是context创建context创建根context创建context context的作用并发控制context.WithCancelcontext.WithDeadlinecontext.WithTimeoutcontext.WithValue 什么是context Golang在1.7版本中引入了一个标准库的接口context&#xf…...

【JAVA集合总结-壹】

文章目录 synchronized 的实现原理以及锁优化&#xff1f;ThreadLocal原理&#xff0c;使用注意点&#xff0c;应用场景有哪些&#xff1f;synchronized和ReentrantLock的区别&#xff1f;说说CountDownLatch与CyclicBarrier 区别Fork/Join框架的理解为什么我们调用start()方法…...

Mysql梳理7——分页查询

目录 7、分页查询 7.1 背景 7.2 实现规则 分页原理 7.3 使用 LIMIT 的好处 7、分页查询 7.1 背景 背景1&#xff1a;查询返回的记录太多了&#xff0c;查看起来很不方便&#xff0c;怎么样能够实现分页查询呢&#xff1f; 背景2&#xff1a;表里有 4 条数据&#xff0c…...

智能制造与工业互联网公益联播∣企企通副总经理杨华:AI的浪潮下,未来智慧供应链迭代方向

近两年在IT圈子里面&#xff0c;AI毫无疑问是最火的一个词语&#xff0c;最近的ChatGPT、文心一言、通义千问&#xff0c;从千亿参数到万亿参数&#xff0c;再往前就是Sora文生视频异军突起... 在人工智能的浪潮下&#xff0c;AI之于供应链的价值体现在哪些地方&#xff1f;其发…...

《深度学习》—— 卷积神经网络(CNN)的简单介绍和工作原理

文章目录 一、卷积神经网络的简单介绍二、工作原理(还未写完)1.输入层2.卷积层3.池化层4.全连接层5.输出层 一、卷积神经网络的简单介绍 基本概念 定义&#xff1a;卷积神经网络是一种深度学习模型&#xff0c;通常用于图像、视频、语音等信号数据的分类和识别任务。其核心思想…...

数据结构:线性表

1、线性表概述 1.1线性表的定义 线性表&#xff08;list&#xff09;&#xff1a;零个或多个数据元素的有限序列。 简单地来说&#xff0c;我们可以用下面这张图来描述一个线性表&#xff1a; 1.2 线性表的存储结构 1.2.1顺序存储结构——顺序表 顺序表是将数据全部存储到…...

Ansible PlayBook实践案例

一、PlayBook介绍 1.什么是playbook playbook 顾名思义&#xff0c;即剧本&#xff0c;现实生活中演员按照剧本表演&#xff0c;在 ansible 中&#xff0c;由被控计算机表演,进行安装&#xff0c;部署应用&#xff0c;提供对外的服务等&#xff0c;以及组织计算机处理各种各样…...

BilibiliDown终极指南:5分钟掌握B站视频下载与音频提取

BilibiliDown终极指南&#xff1a;5分钟掌握B站视频下载与音频提取 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/…...

终极macOS Windows启动盘制作工具:WinDiskWriter完整指南

终极macOS Windows启动盘制作工具&#xff1a;WinDiskWriter完整指南 【免费下载链接】windiskwriter &#x1f5a5; Windows Bootable USB creator for macOS. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x1f47e; UEFI & Legac…...

深度解析EdiZon:Switch游戏存档管理与内存编辑的进阶实战指南

深度解析EdiZon&#xff1a;Switch游戏存档管理与内存编辑的进阶实战指南 【免费下载链接】EdiZon &#x1f4a1; A homebrew save management, editing tool and memory trainer for Horizon (Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/ed/EdiZon 在…...

AI原生组织:从「加AI功能」到「长AI基因」,大企业实践与中小团队轻量思路揭秘

AI原生组织&#xff1a;从「加AI功能」到「长AI基因」的本质跃迁与落地路径AI原生组织并非给传统企业贴AI膏药&#xff0c;而是围绕人机协同重新设计业务逻辑、组织架构和激励机制。下面从认知误区切入&#xff0c;结合阿里、华为、传神等企业案例&#xff0c;拆解AI原生组织的…...

从零开始学大模型Agent:收藏这份反向学习路线,助你避开99%小白踩坑!

本文揭示当前大模型Agent学习路线普遍顺序错误&#xff0c;建议反向学习&#xff1a;先理解底层机制&#xff08;动手写最小Agent&#xff09;&#xff0c;再掌握LangGraph流程建模&#xff08;重点StateGraph、条件边、Checkpointer&#xff09;&#xff0c;深入核心模块工程&…...

闲鱼客户端三重动态签名机制解析:x-sign、x-mini-wua与x-umt

1. 这不是“爬虫教程”&#xff0c;而是一次对闲鱼客户端通信机制的解剖式复盘你有没有遇到过这样的情况&#xff1a;用 Python 写了个闲鱼商品监控脚本&#xff0c;本地跑得好好的&#xff0c;一上服务器就频繁 403&#xff1b;或者用 Postman 模拟请求&#xff0c;Headers 里…...

情感演绎有多强?顶伯实测愤怒、喜悦、悲伤等 9 种语气

&#x1f3ad; 微软 TTS 的情感演绎有多强&#xff1f;顶伯实测愤怒、喜悦、悲伤等 9 种语气&#x1f3af; 引言&#xff1a;语音合成的情感革命在人工智能语音合成领域&#xff0c;情感表达一直是技术难点。微软 TTS&#xff08;文本转语音&#xff09;通过深度学习模型&#…...

告别B站界面混乱:3步找回经典小电视播放器

告别B站界面混乱&#xff1a;3步找回经典小电视播放器 【免费下载链接】Bilibili-Old 恢复旧版Bilibili页面&#xff0c;为了那些念旧的人。 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Old 你是否对B站新版界面感到无所适从&#xff1f;那些复杂的推荐算法…...

高性价比AI编程神器Claude Code+deepseek v4 pro+vscode——详细安装指南(2026最新版)

一.简介 这套组合性价比极高。关于Claude Code&#xff1a;它由Anthropic公司打造&#xff0c;是直接运行在终端中的AI编程助手&#xff0c;让你不用离开命令行就能完成代码生成、调试、重构、甚至Git提交等各种开发任务。本文将带你完成安装与配置。众所周知Claude 模型集强大…...

新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案

新闻传播论文降AI工具免费推荐&#xff1a;2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案 帮室友处理过新闻传播论文降AI&#xff0c;前前后后试了四款工具&#xff0c;最后固定在嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;。 4.8元&#xff0c;达标率99.2…...