使用 MapStruct 的 Spring Boot 问题

问题描述 投票:0回答:1

我是 Spring Boot 新手。我希望有人能帮助我理解我做错了什么。

我创建了服务。

@RequiredArgsConstructor 
@Service
public class UserService {
private final UserRepository userRepository;

private final UserMapper userMapper;

public UserDto login(CredentialDto credentialDto)
{
    User user = userRepository.findBylogin(credentialDto.login())
            .orElseThrow(()-> {
                ApplicationException ex =new ApplicationException();
                ex.setMessage("Unknown user");
                return ex;
            });
    return userMapper.toUserDto(user);
}

}

我的映射器类是:

@Mapper(componentModel = "spring")
public interface UserMapper {
  UserDto toUserDto(User user);
}

我在 IDE 中遇到错误,如下所示:

描述:

com.example.jwttest.service.UserService 中构造函数的参数 1 需要类型为“com.example.jwttest.mappers.UserMapper”的 bean,但无法找到。

行动:

考虑在配置中定义“com.example.jwttest.mappers.UserMapper”类型的 bean。

非常感谢任何帮助。

java spring spring-boot mapstruct
1个回答
0
投票

可能是你没有配置好:

除了依赖性:

    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>

您还需要配置maven-compiler-plugin

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>3.8.0</version>
     <configuration>
         <annotationProcessorPaths>
             <path>
                 <groupId>org.mapstruct</groupId>
                 <artifactId>mapstruct-processor</artifactId>
                 <version>${org.mapstruct.version}</version>
             </path>
             <path>
                 <groupId>org.projectlombok</groupId>
                 <artifactId>lombok</artifactId>
                 <version>${lombok.version}</version>
             </path>
             <dependency>
                 <groupId>org.projectlombok</groupId>
                 <artifactId>lombok-mapstruct-binding</artifactId>
                 <version>0.2.0</version>
             </dependency>
         </annotationProcessorPaths>
         <compilerArgs>
             <compilerArg>
                 -Amapstruct.defaultComponentModel=spring
             </compilerArg>
         </compilerArgs>
     </configuration>
</plugin>

查看此分步教程:springframework.guru/mapstruct

© www.soinside.com 2019 - 2024. All rights reserved.