gpt4 book ai didi

java - Mapsruct 类和 @Service 类没有 @Autowired

转载 作者:行者123 更新时间:2023-12-02 00:57:11 26 4
gpt4 key购买 nike

我正在尝试使用 MapStruct 进行 DTO 到实体(产品)的映射,反之亦然,引用此 blog

├── product
   ├── Product.java
   ├── ProductAPI.java
   ├── ProductDTO.java
   ├── ProductMapper.java
   ├── ProductRespository.java
   └── ProductService.java

在 Controller 中,我看不到 productService(@Service) 和 productMapper(@Mapper) 的 @Autowired

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)没有依赖注入(inject)。

是不是因为Mapstruct框架负责在 Controller 层调用自己? @Service 服务层也是如此吗?

最佳答案

如果 Bean 有一个构造函数(在您的情况下由 @RequiredArgsConstructor 提供),Spring 允许您省略 @Autowired 注释。

简而言之,依赖注入(inject)正在发生,因为 @Autowired 效果正在发生,并且在这种情况下注释本身被省略。

查看文档 here

关于java - Mapsruct 类和 @Service 类没有 @Autowired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61206284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com