Lombok注解无效

Lombok annotations has no effect

我有一个 spring 启动应用程序 2.0.5.RELEASElombok 依赖版本 1.18.2 scope 设置为 provided

一个例子:

@RestController
@RequestMapping("/users")
@AllArgsConstructor
public class UserController {

    private static final UserMapper mapper = Mappers.getMapper(UserMapper.class);

    private UserRepository repository;//It's null, nothing gets injected

    @GetMapping("/")
    public ResponseEntity<List<UserDTO>> getUsers() {

        final List<User> users = (List<User>) repository.findAll();

        return new ResponseEntity<>(users.stream()
                .map(mapper::toDto)
                .collect(Collectors.toList()), HttpStatus.OK);
    }
}

在那种情况下,我收到一个错误,因为 repository 字段是 null。当我去掉lombok @AllArgsConstructor 直接放的时候:

public UserController(UserRepository repository) {
    this.repository = repository;
}

然后它起作用了,在repository字段中注入了一个合适的组件。 UserDTO class也是同样的情况。定义:

@Getter @Setter
public class UserDTO {

    private int id;
    private String firstName;
    private String lastName;
}

Jackson 无法找到吸气剂并抛出异常。如果创建了吸气剂,一切正常"normally"(没有第 3 方库)。

我做错了什么?为什么 lombok 没有生成它应该生成的东西?

我通过勾选设置->编译器->注释处理器中的 "Enable annotation processing" 复选框来修复它。

设置->Build/Execution/Deployment->编译器->注释处理器->启用注释处理器ckeck

除了在 Intellij IDE 中启用注释处理的其他答案外,我们需要添加一个插件以使 IDE 理解 Lombok 项目。 安装 Lombok 插件:设置 > 插件 > Lombok.