在写代码的时候经常会碰到需要获取JavaBean的场景,使用Spring 的 @Resource/@Autowired 注入基本能覆盖80% 获取bean 的场景,但是在有的场景下不能使用注入的方式,如:在使用dubbo 的filter 功能时,因为dubbo 的filter不由Spring 管理,所以使用注入的方式会导致注入不成功。
此时,只能从容器中手动的获取Bean,根据不同的情况可以有三种方法,前两种是在Web容器启动起来时使用,第三种方法是在Web容器没启动时使用(如Spring 单元测试)
继承ApplicationContextAware 来获取Bean
创建一个类继承ApplicationContextAware
package com.example;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class ApplicationContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
this.applicationContex