3

我需要知道 applicatoncontextaware 是如何工作的。我有 applicationContext.xml,它有一些导入资源(另一个 applicationContext)。我需要在我的 java 类中使用 applicationContext.xml 来使用其中的 spring bean。

我开始了解用于获取 java 类中的 spring bean 的 applicationcontextaware 类。Applicationaware 具有 set 和 getapplicationcontext() 方法。getapplicationcontext() 被定义为静态的。

applicationContextware如何加载applicationContext.xml?我是否需要提供 applicationContext.xml 的位置以便加载 applicationcontextaware?我如何在我的 java 类中使用它?

4

1 回答 1

15

你混淆了几件事。首先我们在谈论ApplicationContextAware类,对吧?它只有一种方法:

setApplicationContext(ApplicationContext applicationContext)

您通常这样实现:

public class MyFancyBean implements ApplicationContextAware {

  private ApplicationContext applicationContext;

  void setApplicationContext(ApplicationContext applicationContext) {
    this.applicationContext = applicationContext;
  }

  public void businessMethod() {
    //use applicationContext somehow
  }

}

但是,您很少需要ApplicationContext直接访问。通常,您启动它一次,然后让 bean 自动填充自己。

我需要在我的 java 类中使用 applicationContext.xml 来使用其中的 spring bean。

干得好:

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

请注意,您不必提及已包含在applicationContext.xml. 现在您可以简单地按名称或类型获取一个 bean:

ctx.getBean("someName")

请注意,有很多方法可以启动 Spring - using ContextLoaderListener@Configurationclass 等。

于 2012-04-12T17:22:20.763 回答