# Service 代码注释示例 ## 场景 为 Service 接口和实现类添加完整的 JavaDoc 注释。 ## Service 接口示例 ### 原始代码 ```java package com.example.service; import com.example.dto.UserDTO; import java.util.List; public interface UserService { UserDTO createUser(UserCreateRequest request); UserDTO findById(Long id); List findAll(); UserDTO updateUser(Long id, UserUpdateRequest request); void deleteById(Long id); } ``` ### 添加注释后的代码 ```java package com.example.service; import com.example.dto.UserDTO; import java.util.List; /** * 用户服务接口 * *

定义用户相关的业务逻辑接口,包括用户的增删改查操作。 * 本接口遵循领域驱动设计(DDD)原则,封装用户领域的核心业务逻辑。 * *

主要职责: *

* * @author System * @since 1.0.0 */ public interface UserService { /** * 创建新用户 * *

根据用户创建请求创建新用户,包括数据验证、密码加密等处理。 * * @param request 用户创建请求对象 * @return 创建成功的用户信息 DTO * @throws IllegalArgumentException 当请求参数不合法时抛出 * @throws BusinessException 当用户名或邮箱已存在时抛出 */ UserDTO createUser(UserCreateRequest request); /** * 根据 ID 查询用户 * *

根据用户 ID 查询用户详细信息,如果用户不存在则抛出异常。 * * @param id 用户唯一标识符 * @return 用户信息 DTO * @throws ResourceNotFoundException 当用户不存在时抛出 */ UserDTO findById(Long id); /** * 查询所有用户 * *

查询系统中所有用户的信息列表。 * * @return 用户信息 DTO 列表 */ List findAll(); /** * 更新用户信息 * *

根据用户 ID 和更新请求,更新用户的指定字段信息。 * * @param id 用户唯一标识符 * @param request 用户更新请求对象 * @return 更新后的用户信息 DTO * @throws ResourceNotFoundException 当用户不存在时抛出 * @throws IllegalArgumentException 当更新参数不合法时抛出 */ UserDTO updateUser(Long id, UserUpdateRequest request); /** * 根据 ID 删除用户 * *

根据用户 ID 删除指定用户,删除操作会级联删除用户相关的数据。 * * @param id 用户唯一标识符 * @throws ResourceNotFoundException 当用户不存在时抛出 */ void deleteById(Long id); } ``` ## ServiceImpl 实现类示例 ### 原始代码 ```java package com.example.service.impl; import com.example.service.UserService; import com.example.dto.UserDTO; import com.example.mapper.UserMapper; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl implements UserService { private final UserMapper userMapper; public UserServiceImpl(UserMapper userMapper) { this.userMapper = userMapper; } @Override public UserDTO createUser(UserCreateRequest request) { // 验证用户名是否已存在 if (userMapper.existsByUsername(request.getUsername())) { throw new BusinessException("用户名已存在"); } // 创建用户实体 User user = new User(); user.setUsername(request.getUsername()); user.setEmail(request.getEmail()); user.setPassword(passwordEncoder.encode(request.getPassword())); // 保存到数据库 userMapper.insert(user); // 转换为 DTO 返回 return convertToDTO(user); } @Override public UserDTO findById(Long id) { User user = userMapper.selectById(id); if (user == null) { throw new ResourceNotFoundException("用户不存在"); } return convertToDTO(user); } // ... 其他方法 } ``` ### 添加注释后的代码 ```java package com.example.service.impl; import com.example.service.UserService; import com.example.dto.UserDTO; import com.example.mapper.UserMapper; import org.springframework.stereotype.Service; import java.util.List; /** * 用户服务实现类 * *

实现 {@link UserService} 接口,提供用户相关的业务逻辑实现。 * 本类负责处理用户创建、查询、更新、删除等核心业务操作。 * *

主要功能: *

* * @author System * @since 1.0.0 */ @Service public class UserServiceImpl implements UserService { /** * 用户数据访问对象 * *

用于执行用户相关的数据库操作 */ private final UserMapper userMapper; /** * 密码编码器 * *

用于对用户密码进行加密处理 */ private final PasswordEncoder passwordEncoder; /** * 构造函数 * * @param userMapper 用户数据访问对象,由 Spring 容器注入 * @param passwordEncoder 密码编码器,由 Spring 容器注入 */ public UserServiceImpl(UserMapper userMapper, PasswordEncoder passwordEncoder) { this.userMapper = userMapper; this.passwordEncoder = passwordEncoder; } /** * 创建新用户 * *

实现用户创建的业务逻辑,包括: *

    *
  1. 验证用户名是否已存在
  2. *
  3. 验证邮箱是否已存在
  4. *
  5. 对密码进行加密处理
  6. *
  7. 创建用户实体并保存到数据库
  8. *
  9. 转换为 DTO 返回
  10. *
* * @param request 用户创建请求对象,包含用户名、邮箱、密码等信息 * @return 创建成功的用户信息 DTO * @throws IllegalArgumentException 当请求参数不合法时抛出 * @throws BusinessException 当用户名或邮箱已存在时抛出 */ @Override public UserDTO createUser(UserCreateRequest request) { // 验证用户名是否已存在 if (userMapper.existsByUsername(request.getUsername())) { throw new BusinessException("用户名已存在"); } // 创建用户实体 User user = new User(); user.setUsername(request.getUsername()); user.setEmail(request.getEmail()); user.setPassword(passwordEncoder.encode(request.getPassword())); // 保存到数据库 userMapper.insert(user); // 转换为 DTO 返回 return convertToDTO(user); } /** * 根据 ID 查询用户 * *

根据用户 ID 从数据库查询用户信息,如果用户不存在则抛出异常。 * * @param id 用户唯一标识符 * @return 用户信息 DTO * @throws ResourceNotFoundException 当用户不存在时抛出 */ @Override public UserDTO findById(Long id) { User user = userMapper.selectById(id); if (user == null) { throw new ResourceNotFoundException("用户不存在"); } return convertToDTO(user); } // ... 其他方法 } ``` ## 注释要点 1. **接口注释**: - 说明接口的职责和设计原则 - 列出主要功能点 - 每个方法都要有详细的 JavaDoc 2. **实现类注释**: - 说明实现类的职责 - 描述实现的主要功能 - 字段注释说明依赖关系 - 方法注释详细说明实现逻辑