工具类中的静态方法注入service和spring配置的值的解决方案

我们知道,静态方法不属于某一个对象,而是类的属性

举个例子

public class MailUtil{

public Service service;

@Value("${name}")

public static String staticName;

public static void method(){

    service.modify(name);

}

}

如果我们直接使用MailUtil.method()时,会抛出空指针异常,并且得到的name值是null

因为Spring对于容器的注入是在静态方法之后的,所以在Spring进行bean的注入时,这部分数据会被还原(本身spring是不推荐用静态方法外定义静态属性的)需要在容器启动的时候把这部分再次赋予值

对于服务等bean的注入,需要通过构造函数来实现的

@Autowired

public MailUtils(Service service){

        return MailUtils.service = service;

}

对于值的注入(通过set注入)

@Value("${name}")

public void setStaticName(String  name){

        staticName = name;

}

这样启动项目后就不会取不到服务和值了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 9,255评论 0 11
  • IoC 容器 Bean 的作用域 自定义作用域实现 org.springframework.beans.facto...
    Hsinwong阅读 7,241评论 0 7
  • 昨日之前 在远隔重山的异乡 我怀揣着一颗思念的心 时刻惦记着你、回想着你 你,可曾感受到那片片痴情? 昨日,在行进...
    月初晴阅读 3,290评论 0 10
  • 瑜珈集训第三节课20180717 悦琪老师让大家重新再聊初心、愿景的时候,让我感受到强化初心和愿景能让我们在练习的...
    沙沙1905阅读 2,865评论 1 3
  • 只能当朋友 真的很遗憾。 我等过你啊 也不止一次提醒你我会走。 熬夜和爱你 我都该戒了。 比起心动 我更喜欢心...
    一生无味_dcd4阅读 2,981评论 0 2