美文网首页
工具类中的静态方法注入service和spring配置的值的解决

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

作者: 念了个卿 | 来源:发表于2019-03-12 16:06 被阅读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;

    }

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

    相关文章

      网友评论

          本文标题:工具类中的静态方法注入service和spring配置的值的解决

          本文链接:https://www.haomeiwen.com/subject/cmrnpqtx.html