使用@Value注解时如何创建final变量

use*_*111 4 spring spring-boot

我在论坛上读过类似的帖子,但实际上找不到答案。我正在从 application.yaml 文件中读取属性,但我想将该变量设为最终变量。但编译器不允许我这样做,并说该变量可能未初始化。我想做的是使用final,如下所示。所以这个变量是在控制器类中定义的。

 @Value("${host.url}")
 private final String url;
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能做到最后呢?

cas*_*lin 10

实现它的唯一方法是使用构造函数注入。

@Component
public class MyBean {

    private final String url;

    public MyBean(@Value("${host.url}") String url) {
        this.url = url;
    }
}
Run Code Online (Sandbox Code Playgroud)