我以这样的方式编程,以避免在其他服务https://github.com/JonkiPro/REST-Web-Services/tree/master/core/src/main/java/com/core/jpa/service中使用服务。我尝试只使用服务上的存储库。我目前正在编写一个使用两种服务的控制器。一个用于保存云中的文件,另一个用于在云中保存带有文件标识符的实体。
@PutMapping(value = "/contributions/{id}/photos")
@ResponseStatus(HttpStatus.NO_CONTENT)
public
void updatePhotoContribution(
@PathVariable("id") final Long id,
@RequestParam(required = false) Set<Long> elementIdsToAdd,
@RequestPart(required = false) List<MultipartFile> elementsToAdd,
@RequestPart(required = false) List<MultipartFile> newElementsToAdd,
@RequestParam(required = false) Set<Long> idsToUpdate,
@RequestPart(required = false) List<MultipartFile> elementsToUpdate,
@RequestParam(required = false) Set<Long> idsToDelete,
@RequestParam final Set<String> sources,
@RequestParam(required = false) final String comment
) {
Set<String> ids = new HashSet<>();
for(files) {
String id = this.storageService.save(...); // Save the file in the cloud with file identifiers stored in the cloud
ids.add(id);
}
Contribution contribution = //create contribution
try {
this.movieContributionPersistenceService.updateReviewContribution(contribution, id, this.authorizationService.getUserId());
} catch(ResourceNotFoundException e) {
// remove the file from the cloud
throw new ResourceNotFoundException(e.getMessage());
} catch(ResourceConflictException e) {
// remove the file from the cloud
throw new ResourceConflictException(e.getMessage());
}
}
这是我遇到的问题的唯一解决方案。如果我在movieContributionPersistenceService中使用了storageService,它看起来会更好,但我坚持认为我只在服务上使用存储库。你觉得怎么样?
那是我之前基于同一原则创建的另一个控制器:https://pastebin.com/Ry1gcYdL
答案 0 :(得分:0)
在其他服务中自动装配服务并不是一个灾难性的结构,但这样你最终会将服务结合起来,从而导致维护问题。
而不是耦合您的服务,您可以使用通用功能创建一个util,并使两个服务都使用它。