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

 更新时间:2024年10月08日 09:49:59   作者:Qiuner  
这篇文章主要介绍了Java/Spring项目的包开头为什么是com的相关资料,在Java中包命名遵循域名反转规则,即使用公司的域名反转作为包的前缀,以确保其全球唯一性和避免命名冲突,这种规则有助于逻辑分层、代码可读性提升和标识代码来源,需要的朋友可以参考下
  • 下面是一个使用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呢?

到此这篇关于Java/Spring项目的包开头为什么是com的文章就介绍到这了,更多相关Java/Spring包开头com内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 实例详解SpringMVC入门使用

    实例详解SpringMVC入门使用

    大家好,本篇文章主要讲的是实例详解SpringMVC入门使用,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 解决Springboot @Autowired 无法注入问题

    解决Springboot @Autowired 无法注入问题

    WebappApplication 一定要在包的最外层,否则Spring无法对所有的类进行托管,会造成@Autowired 无法注入。接下来给大家介绍解决Springboot @Autowired 无法注入问题,感兴趣的朋友一起看看吧
    2018-08-08
  • Spring之IOC底层原理详解

    Spring之IOC底层原理详解

    这篇文章主要介绍了Spring之IOC底层原理,内容详细,文章简单易懂,具有一定的参考价值,需要的朋友可以参考下
    2023-01-01
  • add方法理解ArrayList的扩容机制

    add方法理解ArrayList的扩容机制

    这篇文章主要为大家介绍了add方法理解ArrayList的扩容机制示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • java如何将map数据存入到实体类对象中

    java如何将map数据存入到实体类对象中

    在Java编程中,经常需要将Map集合中的数据转换为实体类对象,这可以通过反射机制实现,即通过遍历Map对象,使用反射根据键名对应实体类的属性名,动态调用setter方法将值设置到实体对象中,这样的操作使得数据从Map结构转移到了具体的JavaBean中,便于后续的操作和管理
    2024-09-09
  • MybatisPlus中@TableField注解的使用详解

    MybatisPlus中@TableField注解的使用详解

    这篇文章主要介绍了MybatisPlus中@TableField注解的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 关于ReentrantLock的实现原理解读

    关于ReentrantLock的实现原理解读

    这篇文章主要介绍了关于ReentrantLock的实现原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • JAVA中 redisTemplate 和 jedis的配合使用操作

    JAVA中 redisTemplate 和 jedis的配合使用操作

    这篇文章主要介绍了JAVA中 redisTemplate 和 jedis的配合使用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Maven多仓库多镜像源配置过程

    Maven多仓库多镜像源配置过程

    本文详细介绍了Maven中的仓库(Repository)和镜像(Mirror)配置,包括它们的区别、分类、配置位置、注意事项以及协同工作流程,通过多仓库配置,可以解决依赖来源多样性问题;通过多镜像配置,可以提高下载效率并统一管理
    2025-11-11
  • Java中Connection timed out和Connection refused的区别讲解

    Java中Connection timed out和Connection refused的区别讲解

    今天小编就为大家分享一篇关于Java中Connection timed out和Connection refused的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04

最新评论