spring:如何注入静态字段的值?

有了这门课

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

如果我尝试Sample.name,它总是'空'。 所以我试了一下

 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场是邪恶的 。 spring不允许注入这样的领域是有原因的。

你的解决方法是有效的,你甚至不需要getter / setter, private领域就足够了。 另一方面试试这个:

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

(使用@Autowired / @Resource )。 但给你一些build设性的意见:创build第二类与private领域和getter而不是public static字段。