前置条件

在开发之前,请确保

介绍

demo需涉及到app层的service接口类与其实现类。

service 调用领域对象或服务来解决问题,应用层Service主要有以下特性:

  • 负责事务处理,所以事务的注解可以在这一层的service中使用。
  • 只处理非业务逻辑,重点是调度业务处理流程。业务逻辑处理一定要放在领域层处理。
  • 不做单元测试,只做验收测试。
  • 可能会有比较多的依赖组件(领域服务),使用field注入依赖的组件。
  • 方法要求无状态,只接受dto元数据类型作为参数。

Service 接口类

  • Service 接口类定义了业务操作的一系列接口,并不提供实现,具体实现需要通过服务实现层提供,所以属于供应方的服务接口层。创建在项目模块的 xxx.app.service 包下。

UserService.java 代码

  1. package io.choerodon.todo.app.service;
  2. import io.choerodon.todo.api.dto.UserDTO;
  3. public interface UserService {
  4. UserDTO create(UserDTO userDTO);
  5. }

TaskService.java 代码

  1. package io.choerodon.todo.app.service;
  2. import io.choerodon.todo.api.dto.TaskDTO;
  3. public interface TaskService {
  4. TaskDTO create(TaskDTO taskDTO);
  5. void deleteById(Long id);
  6. void deleteByTaskNumber(String taskNumber);
  7. TaskDTO update(TaskDTO taskDTO);
  8. TaskDTO queryById(Long id);
  9. }

Service 实现类

  • Service 接口的具体实现通过服务实现层提供,所以属于供应方的服务实现层。创建在项目模块的 xxx.app.service.impl 包下。
  • 实现类,需要用 @Service 标注

UserServiceImpl.java 代码

  1. package io.choerodon.todo.app.service.impl;
  2. // 省略 import
  3. @Service
  4. public class UserServiceImpl implements UserService {
  5. private UserRepository userRepository;
  6. private UserConvertor userConvertor;
  7. public UserServiceImpl(UserRepository userRepository, UserConvertor userConvertor) {
  8. this.userRepository = userRepository;
  9. this.userConvertor = userConvertor;
  10. }
  11. @Override
  12. public UserDTO create(UserDTO userDTO) {
  13. return userConvertor.entityToDto(
  14. userRepository.create(userConvertor.dtoToEntity(userDTO))
  15. );
  16. }
  17. }

UserServiceImpl.java 代码

  1. package io.choerodon.todo.app.service.impl;
  2. // 省略 import
  3. @Service
  4. public class UserServiceImpl implements UserService {
  5. private UserRepository userRepository;
  6. private UserConvertor userConvertor;
  7. public UserServiceImpl(UserRepository userRepository, UserConvertor userConvertor) {
  8. this.userRepository = userRepository;
  9. this.userConvertor = userConvertor;
  10. }
  11. @Override
  12. public UserDTO create(UserDTO userDTO) {
  13. return userConvertor.entityToDto(
  14. userRepository.create(userConvertor.dtoToEntity(userDTO))
  15. );
  16. }
  17. }

TaskServiceImpl.java 代码

  1. package io.choerodon.todo.app.service.impl;
  2. // 省略 import
  3. @Service
  4. public class TaskServiceImpl implements TaskService {
  5. private TaskRepository taskRepository;
  6. private TaskConvertor taskConvertor;
  7. public TaskServiceImpl(TaskRepository taskRepository, TaskConvertor taskConvertor) {
  8. this.taskRepository = taskRepository;
  9. this.taskConvertor = taskConvertor;
  10. }
  11. @Override
  12. public TaskDTO create(TaskDTO taskDTO) {
  13. return taskConvertor.entityToDto(
  14. taskRepository.create(taskConvertor.dtoToEntity(taskDTO)));
  15. }
  16. @Override
  17. public void deleteById(Long id) {
  18. taskRepository.deleteById(id);
  19. }
  20. @Override
  21. public void deleteByTaskNumber(String taskNumber) {
  22. taskRepository.deleteByTaskNumber(taskNumber);
  23. }
  24. @Override
  25. public TaskDTO update(TaskDTO taskDTO) {
  26. return taskConvertor.entityToDto(
  27. taskRepository.update(taskConvertor.dtoToEntity(taskDTO)));
  28. }
  29. @Override
  30. public TaskDTO queryById(Long id) {
  31. return taskConvertor.entityToDto(taskRepository.queryById(id));
  32. }
  33. }