软件工程

Service层 - 业务逻辑的核心
职责定位
实现核心业务逻辑
事务管理(@Transactional)
异常处理
组合多个Repository的操作
`@Service
@Transactional
public class UserServiceImpl implements UserService {

private final UserRepository userRepository;
private final RoleRepository roleRepository;

public UserServiceImpl(UserRepository userRepository, 
                     RoleRepository roleRepository) {
    this.userRepository = userRepository;
    this.roleRepository = roleRepository;
}

@Override
public UserDTO getUserById(Long id) {
    User user = userRepository.findById(id)
            .orElseThrow(() -> new ResourceNotFoundException("User not found"));
    return convertToDTO(user);
}

@Override
public void createUser(UserCreateRequest request) {
    if (userRepository.existsByUsername(request.getUsername())) {
        throw new BusinessException("Username already exists");
    }
    
    User user = new User();
    user.setUsername(request.getUsername());
    user.setPassword(passwordEncoder.encode(request.getPassword()));
    
    Role defaultRole = roleRepository.findByName("ROLE_USER")
            .orElseThrow(() -> new SystemException("Default role not configured"));
    
    user.setRoles(Set.of(defaultRole));
    userRepository.save(user);
}

// 转换方法
private UserDTO convertToDTO(User user) {
    // 实现DTO转换逻辑
}

}`
关键点
使用@Service注解标记服务组件
类级别@Transactional注解确保方法在事务中执行
通过构造器注入依赖的Repository
处理业务异常和系统异常
实现业务规则校验
协调多个Repository完成复杂操作

posted @ 2025-03-27 22:44  ytr123  阅读(7)  评论(0)    收藏  举报