软件工程
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完成复杂操作

浙公网安备 33010602011771号