gpt4 book ai didi

java - 属性上的 Spring @Autowired 和 @Value 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:45 24 4
gpt4 key购买 nike

我想在属性上使用 @Value,但我总是得到 0(在 int 上)。
但它在构造函数参数上有效。

例子:

@Component
public class FtpServer {

@Value("${ftp.port}")
private int port;

public FtpServer(@Value("${ftp.port}") int port) {
System.out.println(port); // 21, loaded from the application.properties.
System.out.println(this.port); // 0???
}
}

该对象是 spring 管理的,否则构造函数参数将不起作用。

有谁知道是什么导致了这种奇怪的行为?

最佳答案

字段注入(inject)是在构造对象之后完成的,因为显然容器不能设置不存在的属性。该字段将始终在构造函数中取消设置。

如果你想打印注入(inject)的值(或者做一些真正的初始化:)),你可以使用一个用@PostConstruct注解的方法,它会在注入(inject)过程之后执行。

@Component
public class FtpServer {

@Value("${ftp.port}")
private int port;

@PostConstruct
public void init() {
System.out.println(this.port);
}

}

关于java - 属性上的 Spring @Autowired 和 @Value 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46035971/

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