gpt4 book ai didi

java - Spring错误:(21, 34)java:变量customUriBuilder未在默认构造函数中初始化

转载 作者:行者123 更新时间:2023-12-02 09:46:39 25 4
gpt4 key购买 nike

我有Spring bean

@Component
public class CustomUriBuilder {

private final String cUrl;
private final String redirectUri;
private final String clientId;

public CustomUriBuilder (@Value("${project.url}") String cUrl,
@Value("${project.redirect.url}") String redirectUri, @Value("${project.client-id}") String clientId) {
this.cUrl= cUrl;
this.redirectUri = redirectUri;
this.clientId = clientId;
}
//No default constructor
}

我需要将此 bean 注入(inject)另一个 bean

@Component
public class LinksBuilder {
@Autowired
private final CustomUriBuilder customUriBuilder ;
//No constructors
}

但是我遇到编译错误

Error:(21, 34) java: variable customUriBuilder not initialized in the default constructor

同时,我在另一个 Controller 中注入(inject)LinksBuilder(作为最终版本),没有任何问题

@RestController
@RequestMapping(produces = "application/json")
public class resourceV4 {

private final LinksBuilder linksBuilder;
//No constructors
.
}

为什么在第一种情况下会出错,但在第二种情况下却工作正常?

最佳答案

从 spring 4.3 开始,有一个功能 - 您不能为最终字段注入(inject)添加 Autowired 注释

您必须对最终字段进行构造函数初始化。我看不到 LinksBuilder 和 ResourceV4 的链接。请参阅 lombok @RequiredArgsContructor 简称。

不可能一个带有final字段的类在没有构造函数的情况下编译正常,而另一个类却出现错误。

运行其他编译器或构建方式(终端 gradlew/maven 等)来为您澄清情况

关于java - Spring错误:(21, 34)java:变量customUriBuilder未在默认构造函数中初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56599652/

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