Spring获取上下文对象ApplicationContext的2种办法

想要在Spring中手动获取Bean对象,我们就要先获取ApplicationContext对象即Spring的上下文。通过ApplicationContext对象我们就可以手动的从Spring中获取被Spring管理的Bean。

获取ApplicationContext有2种办法:

1、直接使用注解注入上下文对象即可

@Autowired
private ApplicationContext applicationContext;

但是很多情况下,我们需要手动获取Bean对象的原因就是无法使用注解注入,所以我们需要使用方法2。

2、通过工具类将ApplicationContext对象存入静态变量的方式进行获取

/**
 * SpringUtil
 */
@Component
public class SpringUtil implements ApplicationContextAware{

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringUtil.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext() {
        if (applicationContext == null) {
            throw new ApplicationContextException("SpringUtil.applicationContext is null");
        }
        return applicationContext;
    }

}

通过如上的工具类,我们就可以在Spring启动之后,在代码任意位置通过SpringUtil.getApplicationContext()方法获取ApplicationContext对象,进而获取需要的各种Bean。

工具类解析:
通过实现ApplicationContextAware接口将ApplicationContext对象存到工具类的静态属性中,记得在工具类上需要添加@Component使得工具类能被Spring管理,否则setApplicationContext方法并不会被调用,即applicationContext为null。

使用样例:

TestService bean = SpringUtil.getApplicationContext().getBean(TestService.class);

文章太有用啦👍,打赏个钢镚鼓励鼓励!!