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 static
非final
场是邪恶的 。 spring不允许注入这样的领域是有原因的。
你的解决方法是有效的,你甚至不需要getter / setter, private
领域就足够了。 另一方面试试这个:
@Value("${my.name}") public void setPrivateName(String privateName) { Sample.name = privateName; }
(使用@Autowired
/ @Resource
)。 但给你一些build设性的意见:创build第二类与private
领域和getter而不是public static
字段。