IDEA 中的 Spring 支持与 Lombok:是否支持“导航到自动装配依赖项”?

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

Lombok 支持生成带有

@Inject
注解的构造函数:

@RequiredArgsConstructor(onConstructor = @__(@Inject))

所以,而不是

@Service
public class FooService {

    private final BarService barService;

    @Inject
    public FooService(BarService barService) {
        this.barService = barService;
    }
}

你可以写

@Service
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class FooService {
    private final BarService barService;
}

我对该功能的问题是它似乎破坏了 IntelliJ 中的 Spring IDE 支持:

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

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

是否可以将 IDEA 中完整的 Spring 支持与 Lombok

onConstructor = @__(@Inject)
构造函数结合使用?

java spring intellij-idea dependency-injection lombok
2个回答
0
投票

lombok 注释

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

@Service
@RequiredArgsConstructor
public class FooService {
    private final BarService barService;
}

Java 17 之后

record
也会这样做 -

@Service
public record FooService(BarService barService) {
}

0
投票

使用

@RequiredArgsConstructor
注释代替。它将自动连接您所有的
final
字段。
@Inject
注释不是很有用。

@Service
@RequiredArgsConstructor
public class FooService {

    private final BarService barService;
}
© www.soinside.com 2019 - 2024. All rights reserved.