说一下Spring 常用的 Aware 接口?
在Spring框架中,有一系列的Aware接口,它们允许beans在创建时获得一些重要的框架对象,如ApplicationContext、Environment等。下面是一些常用的Aware接口:
- ApplicationContextAware: 这个接口可以让bean获得当前的ApplicationContext,从而让bean有能力访问所有的Spring管理的其他bean。
-
BeanFactoryAware: 通过实现这个接口,bean可以获得创建它的BeanFactory。
-
BeanNameAware: 通过实现这个接口,bean可以知道自己在BeanFactory中的名字。
-
EnvironmentAware: 实现这个接口的bean可以获取到Spring的Environment,这样就可以访问到profiles和属性。
-
MessageSourceAware: 实现这个接口的bean可以获得MessageSource,从而可以解析messages。
-
ResourceLoaderAware: 实现这个接口的bean可以获得ResourceLoader,从而可以加载资源文件。
-
ApplicationEventPublisherAware: 实现这个接口的bean可以获得ApplicationEventPublisher,可以发布事件到应用的其他部分。
-
EmbeddedValueResolverAware: 实现这个接口的bean可以获得StringValueResolver,这样可以解析Spring表达式。
这些Aware接口通过回调方式让bean获得Spring框架的资源。当创建实现这些接口的bean时,Spring会检测bean是否实现了这些接口,如果实现了,Spring就会调用相应的方法,将对应的资源注入到bean中。
需要注意的是,尽管Aware接口给bean提供了更大的灵活性,但在大多数情况下,推荐的做法是让bean尽可能地不知道Spring容器的存在,以保持代码的清洁和解耦。因此,除非有特殊需求,否则你应该尽量避免使用Aware接口。