欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决 注入Bean为null的问题 ApplicationContext Spring 上下文对象

程序员文章站 2022-05-23 10:26:11
...

做项目的时候在使用一些其他框架的时候 发现Autowired 为NULL 查阅了一些资料发现以下这个方法可以解决这个问题

1.创建SpringContextUtil类

package com.example.demo.Confi;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

import java.util.Locale;

/**
 * @Author:linjunbo
 * @Description: 解决been注入为null的问题
 * @Date: 2020/1/10 8:47
 */


public class SpringContextUtil implements ApplicationContextAware {
// Spring上下文对象.静态变量,可在任何代码任何地方任何时候中取出ApplicaitonContext(spring的容器).
    private static ApplicationContext context;

    @Override
   // @SuppressWarnings("static-access")
    public void setApplicationContext(ApplicationContext contex)
            throws BeansException {
        // TODO Auto-generated method stub
        this.context = contex;
    }

    public static Object getBean(String beanName) {
        return context.getBean(beanName);
    }

    public static String getMessage(String key) {
        return context.getMessage(key, null, Locale.getDefault());

    }
}

2.在java配置文件中将SpringContextUtil加入spring容器里


    @Bean(name = "SpringContextUtil")
    public SpringContextUtil jobFactory(){
        return new SpringContextUtil();
    }

3. 使用

  RoomElectricDayService roomElectricDayService =(RoomElectricDayService)SpringContextUtil.getBean("RoomElectricDayServiceImpl");
相关标签: java web