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

时间:2019-07-05 05:51:30

标签: java spring spring-cloud package-structuring

我有spring cloud项目,每个微服务我都觉得我有很多软件包。我也有模型包女巫包含实体和自定义请求响应对象。

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

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

问题3:是否退出了一些用于包装结构的标准? (请给我链接)

enter image description here

4 个答案:

答案 0 :(得分:2)

没有特定的标准结构,具体取决于您的需求。

  1. 实体类应位于域包下,而不是 附加类名。可以像Book.class, School.class等。,
  2. 搜索请求和响应是请求和响应类,它 应该放在控制器包装内。这些都是服务端 点。
  3. 检查link

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

答案 1 :(得分:2)

  1. 数据库表的程序包名称应为实体。

    Here is why?

  2. 第2季度和第3季度Packaging Structure

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

答案 2 :(得分:1)

没有严格的规则。您必须使用一个易于解释的命名(无需深入了解类的内容即可理解其含义)。 这是微服务,Web应用程序,批处理和任何类型的应用程序的正确选择。

  

我想我有很多包裹

包的主要作用是以易于理解的方式对事物进行排序。
例如,如果按程序包有2或3个类,您可能会怀疑它们的相关性。
同样,如果一个程序包中有50个类,您还可以考虑是否不应该将它们拆分为子程序包。
请注意,包在可访问性方面也起着作用:实际上,package private访问级别允许设置/减少类或类成员对当前包的类的可访问性。就设计和隔离而言,它也可能非常有用。

关于您的3个问题:

  

问题1:实体类包名称必须是什么?实体或   型号?

在Java中,entity通常是指JPA实体(在Spring项目中总体而言)。 尽管model是指一个更通用的概念,其中包括entity,但不仅因为数据模型还可以是DTO对象和模型的任何数据特化。
如果您使用单个数据对象层(也用作JSON表示形式的JPA实体),则使用model一词是完全有意义的。如果您使用多个抽象级别,则按抽象级别的包更有意义。

  

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

如果这些对象遍历model中的每个层,则可能在其他地方。

  

问题3:是否退出了一些用于包装结构的标准? (请给   我链接)

3)并非完全如此,但根据经验,它应该是自我解释的,非常清楚的并且由项目团队共享,以促进项目之间的一致性。

答案 3 :(得分:1)

创建软件包是免费的,因此不必担心创建许多软件包。创建软件包的目的是组织代码并界定一些职责或上下文。

  

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

在选择更好的名称之前,您需要在understand the difference之间进行选择:

  

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

因此,您可以将Entity用作Model类,即使我理解这也是一种不好的做法。如果是您的情况,也许您更喜欢使用model作为程序包名称。如果没有,entity是正确的选择。

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

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

controller.response
controller.request
  

问题3:是否退出了一些用于包装结构的标准? (请给我链接)

查看此答案:Are there best practices for (Java) package organization?