一尘不染

spring自动连线无法从非spring管理的类工作

spring

我有一个通过调用构造函数实例化的类(Class ABC)。ABC类又具有通过自动接线注入的辅助类(XYZ类)。

我们的是基于Spring MVC的应用程序,在服务器启动时我看不到任何异常。

但是我仍然看到XYZ类为空。是否是因为Spring Container没有实例化ABC类?

在这种情况下,如何使用自动接线?

谢谢。


阅读 290

收藏
2020-04-18

共1个答案

一尘不染

你可以使用这种方式在非spring bean类中使用spring bean

    public class ApplicationContextUtils implements ApplicationContextAware {

  private static ApplicationContext ctx;

  @Override
  public void setApplicationContext(ApplicationContext appContext)
      throws BeansException {
    ctx = appContext;

  }

  public static ApplicationContext getApplicationContext() {
    return ctx;
  }
}

现在,你可以通过getApplicationContext()此方法获取applicationcontext对象。

从applicationcontext可以得到像这样的spring bean对象:

 ApplicationContext appCtx = ApplicationContextUtils
    .getApplicationContext();
String strFromContext = (String) appCtx.getBean(beanName);
2020-04-18