有什么用的BeanNameAware和BeanFactoryAware?我正在研究spring并遇到了这两个接口.我用谷歌搜索了他们但没有任何用处.请告诉我什么是BeanNameAware和BeanFactoryAware接口的功能以及何时使用它们?
nic*_*ild 26
该xxxAware接口是Spring框架内使用的公共模式.它们通常用于setXxx在Spring引导时为Spring托管bean提供一个对象(通过interfaces 方法).
Springs文档说明了这个Aware界面,这是你提到的两个界面的超级界面:
标记超级接口,指示bean有资格通过回调样式方法由Spring容器通知特定框架对象.
正如Sotirious指出的那样,Aware界面具有监听器,回调或观察者设计模式的感觉.
用法如下所示:
@Component
public MyBean implements BeanFactoryAware {
    private BeanFactory beanFactory;
    @Override
    public void setBeanFactory(final BeanFactory beanFactory) {
        this.beanFactory = beanFactory;
    }
    public void myMethod() {
        //I can now use beanFactory here
    }
}
在引导期间,Spring将检查每个bean以确定它是否实现了任何xxxAware接口.当找到一个时,它会调用接口方法,提供要求的信息.在上面的例子中,Spring调用MyBean#setBeanFactory提供它BeanFactory.
当然,在许多情况下,使用这些接口并不是完全必要的.例如,所述ApplicationContextAware接口可以通过简单地被规避@Autowired荷兰国际集团的ApplicationContext成豆.
@Component
public class MyOtherBean {
    @Autowired
    private ApplicationContext applicationContext;
    public void someMethod() {
        //I can use the ApplicationContext here.
    }
}
| 归档时间: | 
 | 
| 查看次数: | 22142 次 | 
| 最近记录: |