我需要知道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类中使用它?
答案 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
类等。