不管是我们平时开发中,还是在看spring源码中,都会遇到Aware这个接口,Aware的英文意思:意识到,察觉到,发觉,发现。从英文翻译来看,Aware做的事情应该是发现某一个东西。
注释的大致意思是:Aware是一个标记性的超接口(顶级接口),指示了一个Bean有资格通过回调方法的形式获取Spring容器底层组件。实际回调方法被定义在每一个子接口中,而且通常一个子接口只包含一个接口一个参数并且返回值为void的方法。
说白了:只要实现了Aware子接口的Bean都能获取到一个Spring底层组件。
自定义组件时,想要使用spring容器底层的一些组件,比如ApplicationContext、Beanfactory,xxx等,只需要让自定义组件实现xxxAware,在对象实例化的时候,会把spring底层的一些组件注入到自定义的bean中。通过查看源码,可以看到有这么多的接口,每个接口都有都对应spring相应的底层,比如:
-
实现BeanNameAware接口的bean:获取BeanName
-
实现BeanFactoryAware接口的bean:取到BeanFactory组件对象
-
实现EnvironmentAware接口的bean:获取到Environment组件对象
-
实现XXXAware接口的bean:通过实现的setXXX方法就可以获取到XXX组件对象