实现 BeanFactoηAware 接口的 bean 可以直接访问 Spring 容器,被容器创建以后,它会拥有一个指向 Spring 容器的引用,可以利用该bean根据传入参数动态获取被spring工厂加载的bean,实现方法如下:

@Componet("beanContextUtil ")

public Class BeanContextUtil implements BeanFactoryAware{

  private  static BeanFactory beanFactory;

 public static void setContextBean(BeanFactory  bf){

   this.beanFactory=bf;

}

 public static Object getContextBean(String  beanName){

  return beanFactory.getBean(beanName);

}

 @Override

 public void setBeanFactory(BeanFactory beanFactory) throws BeansException {

  BeanContextUtil.setContextBean(beanFactory);

}

 public static Object getBean(String beanName){

   return BeanContextUtil.getContextBean(beanName);

}  

}

 

 

在service 或者 controller /filter 中使用

private OrderService orderService=(OrderService)BeanContextUtil.getBean("orderService");

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐