将设置器添加到 java spring 引导控制器 class

adding setters to java spring boot controller class

我正在我的控制器中制作我的 put 方法 class 但我有很多不同的属性我想设置是否有某种插件我可以用来填充我所有的设置器

@PutMapping(path = "{documentId}")
public ResponseEntity<Document> updateDocument(
        @PathVariable(value = "documentId") String documentId,
        @Validated @RequestBody Document documentDetails) throws ResourceNotFoundException {
    Document document =  documentRepo.findById(documentId)
            .orElseThrow(() -> new ResourceNotFoundException("Document not found on :: "+ documentId));

    document.setTitle(documentDetails.getTitle());

    final Document updateDocument = documentRepo.save(document);
    return ResponseEntity.ok(updateDocument);
}

您可能正在寻找龙目岛。基本上,您可以向 class 添加注释,Lombok 会为您生成 setter 和其他内容。

您可以使用 Mapstruct 为这种情况创建映射。

package com.example.demo;

import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;

@Mapper(componentModel = "spring")
public interface DocumentMapper {
    void updateDocument(@MappingTarget Document target, Document source);
}

然后在你的控制器中使用它。

@RestController
@RequiredArgsConstructor
public class DocumentController {
    private final DocumentMapper documentMapper;

    @PutMapping
    public Document updateDocument(@RequestBody final Document documentDetails) {
        Document document = new Document(); // documentRepo.findById
        documentMapper.updateDocument(document, documentDetails);
        // documentRepo.save(document)
        return document;
    }
}

因为两个 类 具有相同的 属性 名称,这个 spring 实用程序可以为您节省大量时间;

BeanUtils.copyProperties(source, target);

所以你会得到这个:

@PutMapping(path = "{documentId}")
public ResponseEntity<Document> updateDocument(
        @PathVariable(value = "documentId") String documentId,
        @Validated @RequestBody Document documentDetails) throws ResourceNotFoundException {
    Document document = documentRepo.findById(documentId)
            .orElseThrow(() -> new ResourceNotFoundException("Document not found on :: " + documentId));

    BeanUtils.copyProperties(documentDetails, document);
    // You can also ignore a particular property or properties
    // BeanUtils.copyProperties(documentDetails, document, "id");   
    final Document updateDocument = documentRepo.save(document);
    return ResponseEntity.ok(updateDocument);
}