为了账号安全,请及时绑定邮箱和手机立即绑定

打包结构化 Spring 项目的最佳实践是什么?

打包结构化 Spring 项目的最佳实践是什么?

HUWWW 2023-03-09 13:36:46
我有 spring 云项目和每个微服务,我想我有很多包。我还有模型包女巫包含实体和自定义请求响应对象。问题一:实体类的包名必须是什么?实体还是模型?问题2:Searchrequest & Searchresponse 等请求响应类必须保存在哪里?在模型包中还是我必须创建其他包?问题 3:是否存在一些包结构标准?(请给我链接)
查看完整描述

4 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

没有严格的规定。您必须使用自解释的命名(不需要深入研究类内容来理解其含义)。这适用于微服务、Web 应用程序、批处理和任何类型的应用程序。

我想我有很多包裹

包的主要作用是以人类可读的方式对事物进行排序。
例如,如果你的包有 2 或 3 个类,你可能想知道它们的相关性。
同样,如果一个包中有 50 个类,您也会想知道是否不应该将它们拆分为子包。
请注意,包在可访问性方面也有作用:实际上,package private访问级别允许设置/减少类或类成员对当前包的类的可访问性。它在设计和隔离方面也可能非常有用。

关于你的 3 个问题:

问题一:实体类的包名必须是什么?实体还是模型?

在 Java 中,entity一般指 JPA 实体(Spring 项目中的整体)。虽然model指的是一个更一般的概念,它包括entity但不仅因为数据模型也可以是DTO模型的对象和任何数据专业化。
如果您使用单个数据对象层(也用作 JSON 表示的 JPA 实体),则使用该model术语是完全有意义的。如果您使用多个抽象级别,则按抽象级别打包更有意义。

问题2:Searchrequest & Searchresponse 等请求响应类必须保存在哪里?在模型包中还是我必须创建其他包?

如果这些对象经过每一层 : in model,否则可能在其他地方。

问题 3:是否存在一些包结构标准?(请给我链接)

3) 不是真的,但根据经验,它应该是不言自明的,非常清楚并且由项目团队共享,以促进项目之间的一致性。


查看完整回答
反对 回复 2023-03-09
?
白衣非少年

TA贡献1155条经验 获得超0个赞

创建包是免费的,所以不用担心创建很多包。创建包的目的是组织您的代码并界定一些责任或上下文。

问题一:实体类的包名必须是什么?实体还是模型?

在选择更好的名称之前,您需要了解这两者之间的区别:

模型对象表示 MVC(模型视图控制器)模式中的数据。实体对象表示 ORM(对象关系映射)模式中的数据。它们可能是同一个对象。或不。

因此,您可以将实体用作模型类,即使我认为这是一种不好的做法。如果是你的情况,也许你更喜欢使用model作为包名。如果不是,entity是正确的选择。

问题2:Searchrequest & Searchresponse 等请求响应类必须保存在哪里?在模型包中还是我必须创建其他包?

这些类与控制器包非常相关。因此,您可以创建这两个包并将请求和响应放在那里,每一个都在他的包中:

controller.response
controller.request

问题 3:是否存在一些包结构标准?(请给我链接)

请参阅此答案:Are there best practices for (Java) package organization?


查看完整回答
反对 回复 2023-03-09
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

没有特定的标准结构,它会根据您的需要而变化。

  1. 实体类应该在域包下,不要附加类名。它可以像 Book.class、School.class 等,

  2. 搜索请求和响应是请求和响应类,它应该在控制器包下。这些都是服务端点。

  3. 检查链接

大多数情况下,SERVICE 包将包含所有具有业务逻辑并与 DAO 类连接的服务类,Controller 将包含所有其余端点,Model 包将包含 pojo 类。


查看完整回答
反对 回复 2023-03-09
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

  1. 数据库表的包名应该是entity。

    这是为什么?

  2. Q2和Q3封装结构

希望这有帮助,让我知道:)


查看完整回答
反对 回复 2023-03-09
  • 4 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号