IDEA与Lombok的Spring支持:是否支持"导航到自动连接的依赖项"?

Phi*_*ßen 9 java spring dependency-injection intellij-idea lombok

Lombok支持生成带@Inject注释的构造函数:

@RequiredArgsConstructor(onConstructor = @__(@Inject))
Run Code Online (Sandbox Code Playgroud)

所以,而不是

@Service
public class FooService {

    private final BarService barService;

    @Inject
    public FooService(BarService barService) {
        this.barService = barService;
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以写

@Service
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class FooService {
    private final BarService barService;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是它似乎打破了IntelliJ中的Spring IDE支持:

  • 在非Lombok版本中,IDE显示了自动装配参数的来源,并允许我导航到它们的位置(这里是实现BarService).
  • 在Lombok版本中,我无法让它工作.它仍然显示spring bean声明的位置,但不显示自动连接的依赖项的位置.

如果我是唯一的开发人员,我会使用第一个版本并完成它.但是,我发现代码库中越来越多的代码被迁移到Lombok构造函数样式.所以,我很好奇:

是否可以将IDEA中的完整Spring支持与Lombok onConstructor = @__(@Inject)构造函数结合使用?

San*_*anu 0

lombok 注释@RequiredArgsConstructor将执行基于构造函数的依赖注入。

@Service
@RequiredArgsConstructor
public class FooService {
    private final BarService barService;
}
Run Code Online (Sandbox Code Playgroud)

Java 17 之后record也会这样做 -

@Service
public record FooService(BarService barService) {
}
Run Code Online (Sandbox Code Playgroud)