当前位置: 首页 > 面试题库 >

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

沈建柏
2023-03-14
问题内容

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

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

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

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

谢谢。


问题答案:

你可以使用这种方式在非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);


 类似资料:
  • 问题内容: 我在Spring定义了这样的地图: 然后,我将该bean自动装配为定义为的属性: 这样做时,会抛出一个异常,说: `Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘DutyCreator’: Injection of autowired

  • 我的问题是:我有一个基本接口和两个实现类。 服务类依赖于基本接口,代码如下: 而配置是这样的: 服务类依赖于基础接口,将决定通过某些业务逻辑自动连接哪个实现。代码是这样的: 这个想法引发了一个例外:无法自动连线。有多个bean属于类型。 虽然可以使用@Qualifier来解决这个问题,但在这种情况下,我不能选择dependencies类。 我试图阅读spring文档,它提供了一个基于,但我仍然对这

  • 问题内容: 需要一些帮助,我刚刚开始学习Spring,似乎无法弄清楚我们的错: Application.java-没有包 User.java-包com.mapping UserDAO.java-包com.accesors Root.java-包com.controllers 当我运行项目时,我似乎得到了以下启示 堆栈跟踪: 据我了解,这意味着@ComponentScan没有检测到软件包 问题答案:

  • 代码完成了这项工作,创建了repo HashMap对象({})。然而,我试图让repo映射对象由Spring生成。所以我把DataRepoImpl改成: 然而,当我重构帐户ID和地图键到字符串类型,我能够产生HashMap包含一个'假人'变量,这是奇怪的: 回到Integer,我无法修复错误,然后我尝试将自动连线移到DataRepoImpl类的空构造函数: 然而,我从repo得到空值,因为(我的假

  • 有没有可能将Spring托管Bean连接到一个不受Spring IoC管理的类中?假设有两个类(不受Spring管理)和(由Spring管理)有没有可能将连接到中。 这是我最近遇到的一个问题,我不知道该怎么做?

  • 我对spring中的@Autowired注释有问题。我有一个RestController类: 接口: CategoryManagerImpl类: 每次编译代码时,我都会遇到一个异常: Bun当我创建ApplicationContext并尝试获取categoryManagerImpl bean时,没有问题: 有人知道哪里会有问题吗? 谢谢 添加了 配置类: 堆栈跟踪: