ApplicationContextaware有效

时间:2012-04-12 17:13:26

标签: spring applicationcontext

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

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

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

1 个答案:

答案 0 :(得分: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 - 使用ContextLoaderListener@Configuration类等。