PersonService uses PersonMapper
@Service
public class PersonService {
private final PersonMapper personMapper;
public PersonService(PersonMapper personMapper) {
this.personMapper = personMapper;
}
}
➡️ PersonService → PersonMapper
PersonMapper uses EntityResolverService
@Mapper(componentModel = "spring", uses = EntityResolverService.class)
public interface PersonMapper {
@Mapping(source = "lastProjectId", target = "lastProject", qualifiedByName = "projectFromId")
Person toEntity(PersonDTO dto);
}
➡️ PersonMapper → EntityResolverService
EntityResolverService uses ProjectRepository
@Component
public class EntityResolverService {
@Autowired
private ProjectRepository projectRepository;
@Autowired
private PersonRepository personRepository;
public Project projectFromId(UUID id) {
return projectRepository.findById(id).orElseThrow(...);
}
}
➡️ EntityResolverService → ProjectRepository
ProjectRepository is used by ProjectService
@Service
public class ProjectService {
@Autowired
private ProjectRepository projectRepository;
}
➡️ ProjectRepository → ProjectService
ProjectService uses ProjectMapperjava
CopyEdit
@Service
public class ProjectService {
private final ProjectMapper projectMapper;
public ProjectService(ProjectMapper projectMapper, ProjectRepository repo) {
this.projectMapper = projectMapper;
}
}
➡️ ProjectService → ProjectMapper