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

2019-03-12  本文已影响0人  念了个卿

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

举个例子

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;

}

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

上一篇下一篇

猜你喜欢

热点阅读