我一直在为 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/