gpt4 book ai didi

Spring:如何向静态字段注入(inject)值?

转载 作者:IT老高 更新时间:2023-10-28 13:01:37 25 4
gpt4 key购买 nike

有了这个类

@Component
public class Sample {

@Value("${my.name}")
public static String name;


}

如果我尝试 Sample.name,它总是'null'。所以我尝试了这个。

public class Sample {

public static String name;

@PostConstruct
public void init(){
name = privateName;
}

@Value("${my.name}")
private String privateName;

public String getPrivateName() {
return privateName;
}

public void setPrivateName(String privateName) {
this.privateName = privateName;
}

}

此代码有效。 Sample.name 设置正确。这是好方法还是不好?如果没有,有没有更好的方法?又该怎么做呢?

最佳答案

首先,public staticfinal 字段是evil。 Spring 不允许注入(inject)这些字段是有原因的。

您的 workaround 是有效的,您甚至不需要 getter/setter,private 字段就足够了。另一方面,试试这个:

@Value("${my.name}")
public void setPrivateName(String privateName) {
Sample.name = privateName;
}

(与 @Autowired/@Resource 一起使用)。但是给你一些建设性的建议:使用 private 字段和 getter 而不是 public static 字段创建第二个类。

关于Spring:如何向静态字段注入(inject)值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253694/

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