Я пытаюсь использовать MapStruct для отображения DTO на сущность (продукт) и наоборот, ссылаясь на этот блог .
├── product
├── Product.java
├── ProductAPI.java
├── ProductDTO.java
├── ProductMapper.java
├── ProductRespository.java
└── ProductService.java
В контроллере я не вижу @Autowired
для productService
(@ Service) и productMapper
(@ Mapper).
import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("/products")
public class ProductAPI {
private final ProductService productService;
private final ProductMapper productMapper;
@GetMapping
public ResponseEntity<List<ProductDTO>> findAll() {
return ResponseEntity.ok(productMapper.toProductDTOs(productService.findAll()));
}
@PostMapping
public ResponseEntity<ProductDTO> create(@RequestBody ProductDTO productDTO) {
productService.save(productMapper.toProduct(productDTO));
return ResponseEntity.status(HttpStatus.CREATED).body(productDTO);
}
}
Я хотел бы знать, почему не было бы внедрения зависимостей для класса MapStruct (то есть prodcutMapper
).
Это потому, что инфраструктура Mapstruct отвечает за вызов себя на уровне контроллера? То же самое go для @Service
уровня обслуживания?