Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.6.2 ApplicationContextAware和BeanNameAware

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.6.2 ApplicationContextAware和BeanNameAware相关的知识,希望能为你提供帮助。
6.6.2 ApplicationContextAware和BeanNameAware当ApplicationContext创建了一个实现org.springframework.context.ApplicationContextAware接口的对象实例时,就为该实例提供了ApplicationContext引用。

public interface ApplicationContextAware {void setApplicationContext(ApplicationContext applicationContext) throws BeansException; }

因此,bean可以通过ApplicationContext接口以编程方式操作创建它们的ApplicationContext,或者通过将引用强制转换为此接口的已知子类(例如ConfigurableApplicationContext)来暴露额外的功能。一种用途是对其他bean进行编程式检索。有时这种能力很有用; 然而,通常你应该避免使用它,因为它将代码耦合到Spring并且不遵循协作者作为属性提供给bean这样的控制反转形式。 ApplicationContext的其他方法提供对文件资源的访问,发布应用程序事件和访问MessageSource。这些附加功能在第6.15节“ ApplicationContext的额外功能” 中介绍。
【Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.6.2 ApplicationContextAware和BeanNameAware】从Spring 2.5开始,自动装配是另一种获取ApplicationContext引用的可选方法。“ 传统” 的构造函数和byType自动装配模式(如第6.4.5节“ 自动装配协作者” 中所述)可以分别为构造函数参数或setter方法参数提供ApplicationContext类型的依赖关系。为了获得更大的灵活性,包括使用新的基于注解的自动装配字段和多参数方法的能力。如果您这样做,ApplicationContext将自动装配带有@Autowired注解的字段,构造函数参数或方法参数。 有关更多信息,请参见第6.9.2节“ @Autowired” 。
当ApplicationContext创建实现org.springframework.beans.factory.BeanNameAware接口的类时,该类提供了在其关联对象定义中定义的名称的引用。
public interface BeanNameAware {void setBeanName(string name) throws BeansException; }

该回调函数在普通bean属性填充之后但在初始化回调之前调用,例如InitializingBean afterPropertiesSet或自定义init方法。


    推荐阅读