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 ProjectMapper
java
CopyEdit
@Service
public class ProjectService {
private final ProjectMapper projectMapper;
public ProjectService(ProjectMapper projectMapper, ProjectRepository repo) {
this.projectMapper = projectMapper;
}
}
➡️ ProjectService → ProjectMapper