java - 您对 Spring MVC 应用程序中的服务层使用什么命名约定?

标签 java spring naming-conventions spring-mvc

我一直在为 Spring 应用程序中的服务层找出一个好的命名约定。对于服务层中的每个类,我首先编写它应该实现的接口(interface),然后是实际的类。所以例如我有以下界面:

public interface UserAccountManager{
   public void registerUser(UserAccount newUserAccount);
   public void resetPassword(UserAccount userAccount);
...
}

然后是实现类……

让我烦恼的是,UserAccountManager 是实现类的好名字,所以我不得不给它起一个愚蠢的名字,比如 SimpleUserAccountManager 或 UserAccountDbManager。 到目前为止,您使用了哪些约定?将实现类放在不同的包中并赋予它们与接口(interface)相同的名称是个好主意吗? 另外,您对使用以 Manager 结尾的名称而不是以 Service 结尾的名称有何看法?

最佳答案

这是我们使用的:

  • XxxDAO(数据访问对象) - 负责直接与 EntityManager 、 JDBC DataSource 、文件系统等交互。应该只包含持久化逻辑,例如 SQL 或 JPA-QL,但不包含(或尽可能少)业务逻辑。只能从经理访问。
  • XxxManager - 在业务级别管理实体,通常执行 CRUD 操作,但添加所需的业务逻辑。
  • XxxService - 业务逻辑所在的层。应该尽可能用简单的对象(字符串、整数等)“说话”。
  • XxxController - UI 交互层。只应与服务对话。
  • XxxUtilities/XxxUtils - Helper 无状态方法,不应该依赖于系统中的任何服务。如果您需要这种依赖关系,请将实用程序类转换为服务或将服务结果添加为参数。

对于实现,我们添加 Impl 后缀 (XxxServiceImpl),以将其与接口(interface)区分开来,如果有多个实现或我们想要添加其他信息,我们将其添加为前缀(JdbcXxxDaoImpl、GoogleMapsGeocodingServiceImpl 等)。这样类名会变得有点长,但它们非常具有描述性和 self 记录性。

关于java - 您对 Spring MVC 应用程序中的服务层使用什么命名约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995473/

相关文章:

java - 以 .jar 形式执行项目时无法找到 bluecove jar

java - 接近警报触发两次?

c++ - 这个书上的例子不好吗?

php - 函数参数变量的命名约定?

java - 命名单元和集成测试方法的最佳实践?

Java:更好的客户端/服务器消息交换方法?

java - Java中可靠的非网络IPC

javascript - 将表单从 Angular JS 发送到 Spring

java - Jackson 以相反的顺序从 JSON 反序列化对象

spring - 为 Rest Api 实现 Spring Security