我是 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。
非常感谢任何帮助。
可能是你没有配置好:
除了依赖性:
<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