春天是什么需要applicationcontextAware

时间:2016-08-21 07:10:50

标签: spring

嗨,我正在详细阅读ApplicatonContextAware,并试图了解ApllicationContextAware的需求。

"有时需要访问bean类中的上下文对象来创建另一个bean。但是上下文对象被创建到另一个类中,一旦在调用bean工厂类中创建了它,我们如何在bean类中访问它。这可以使用ApplicationContextAware类实例变量来实现。"

在实际上,我们应该使用不同的contextAware。请。

1 个答案:

答案 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;

获取您的应用程序上下文。