简体   繁体   English

MapStruct - 找不到 IntelliJ 的实现

[英]MapStruct - Cannot find implementation with IntelliJ

Using latest Springboot MapStruct 1.3.1 version to convert Dtos into an object.使用最新的 Springboot MapStruct 1.3.1 版本将 Dtos 转换为对象。 (Java 11, Gradle 6.6 version) I'm getting the following exception: (Java 11,Gradle 6.6 版本)我收到以下异常:

org.springframework.beans.factory.UnsatisfiedDependencyException:
   Error creating bean with name 'userController' defined in 
   file [/directory/UserController.class]: Unsatisfied dependency expressed 
   through constructor parameter 0; nested exception is 
org.springframework.beans.factory.BeanCreationException:
   Error creating bean with name 'userServiceImpl' defined in 
   file [/directory/UserServiceImpl.class]: Bean instantiation via constructor failed; 
   nested exception is 
org.springframework.beans.BeanInstantiationException: 
  Failed to instantiate [package.service.UserServiceImpl]: 
  Constructor threw exception; 
  nested exception is 
java.lang.RuntimeException: java.lang.ClassNotFoundException: 
  Cannot find implementation for package.service.mapper.UserMapper

Please could you take a look where I'm going wrong?请你看看我哪里出错了?

My code:我的代码:

build.gradle构建.gradle

    compile group: 'org.mapstruct', name: 'mapstruct', version: '1.3.1.Final'

UserController.java用户控制器.java

@CrossOrigin(origins = "*", maxAge = 3306)
@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
public class UserController {
    private final UserServiceImpl userService;

    @PostMapping
    public ResponseEntity<UserDTO> login(UserDTO request) {
            return ResponseEntity.ok(userService.login(request));
    }

UserService.java用户服务.java

public interface UserService {
    public UserDTO login(UserDTO user);
}

UserServiceImpl.java UserServiceImpl.java

@Service
@RequiredArgsConstructor
public class UserServiceImpl extends CheckException implements UserService {
    private final UserRepository userRepository;
    private UserMapper mapper = Mappers.getMapper(UserMapper.class);

    @Override
    public UserDTO login(UserDTO user) {
        usernameParameterCheck(user.getId());
        User currentUser = userRepository.findUserByIdAndPassword(user.getId(), user.getPassword());
        userNullCheck(currentUser);
        return mapper.entityToDto(currentUser);
    }
}

UserMapper.java用户映射器

@Mapper(componentModel = "spring")
public interface UserMapper {
    User dtoToEntity(UserDTO userDTO);
    UserDTO entityToDto(User user);
}


我解决了这个问题:在 DTO 类中添加“@NoArgsConstructor”注释:D

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM