嗨,我正在详细阅读ApplicatonContextAware,并试图了解ApllicationContextAware的需求。
"有时需要访问bean类中的上下文对象来创建另一个bean。但是上下文对象被创建到另一个类中,一旦在调用bean工厂类中创建了它,我们如何在bean类中访问它。这可以使用ApplicationContextAware类实例变量来实现。"
在实际上,我们应该使用不同的contextAware。请。
答案 0 :(得分:1)
Spring bean由spring应用程序容器管理,当spring应用程序明星它扫描实现某些接口的bean(有很多这样的接口,如BeanFactory Interfaces,ResourceAware,MessageSource aware等)'ApplicationContextAware'就是其中之一,它有一种方法
void setApplicationContext(ApplicationContext applicationContext)
throws BeansException
并允许实例使用应用程序上下文,此上下文将包含当前可供应用程序使用的所有bean,因此,例如,如果您需要查找某些bean或访问某些应用程序文件资源,甚至发布一些应用程序范围的事件,你可以在你的豆类中使用它。
@Component
public MyClass implements ApplicationContextAware{
private ApplicationContext context;
void setApplicationContext(ApplicationContext applicationContext)
throws BeansException
{
context = applicationContext;
}
public void work(){
MyOtherClass otherClass = context.getBean(MyOtherClass.class);
Resource image = context.getResource("logo.img");
}
}
在新的春天:生活对你来说更容易,
只需致电@Inject ApplicationContext context;
或@Autowired ApplicationContext context;
获取您的应用程序上下文。