为了账号安全,请及时绑定邮箱和手机立即绑定

Spring:如何为静态字段注入值?

/ 猿问

Spring:如何为静态字段注入值?

蝴蝶刀刀 2019-08-27 18:02:31

Spring:如何为静态字段注入值?

有了这堂课

@Componentpublic 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设置得当。这是好方法吗?如果没有,有什么更好的方法吗?怎么做?


查看完整描述

2 回答

?
BIG阳

首先,public staticfinal领域是邪恶的。由于某种原因,Spring不允许注入这些字段。

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

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

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


查看完整回答
反对 回复 2019-08-27
?
海绵宝宝撒

仅供参考:以上代码会导致Sonar / Checkstyle违规(如果您对此类事情感到困扰),因为您有一个实例方法写入静态字段。 

查看完整回答
反对 回复 2019-08-27
  • 2 回答
  • 0 关注
  • 105 浏览
我要回答

相关问题推荐

慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信