gpt4 book ai didi

java - @Value 字段、Lombok 和构造函数注入(inject)的最佳实践?

转载 作者:行者123 更新时间:2023-12-01 08:49:34 24 4
gpt4 key购买 nike

我正在开发一个 Java Spring 应用程序。我的应用程序中有一些字段是使用 .yml 配置文件配置的。我想在相关字段上使用 @Value 注释导入这些值。我还想使用构造函数注入(inject)而不是字段注入(inject)的最佳实践,但我想使用 Lombok 而不是手动编写我的构造函数。有没有办法一次做所有这些事情?例如,这不起作用,但与我想要做的类似:

@AllArgsConstructor
public class my service {
@Value("${my.config.value}")
private String myField;

private Object myDependency;

...
}

在这种情况下,我想要 Lombok 生成一个仅设置 myDependency 的构造函数,并从我的配置文件中读取 myField。

谢谢!

最佳答案

您需要@RequiredArgsConstructor并标记myDependency作为最终。在这种情况下,Lombok 将生成一个基于 'required' final 作为参数提交的构造函数,例如:

@RequiredArgsConstructor
@Service
public class MyService {

@Value("${my.config.value}")
private String myField;

private final MyComponent myComponent;

//...
}

这等于以下内容:
@Service
public class MyService {

@Value("${my.config.value}")
private String myField;

private final MyComponent myComponent;

public MyService(MyComponent myComponent) { // <= implicit injection
this.myComponent = myComponent;
}

//...
}

由于这里只有一个构造函数,所以 Spring 注入(inject) MyComponent without the explicit use of the @Autowired annotation .

关于java - @Value 字段、Lombok 和构造函数注入(inject)的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52321988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com