纪检监察机关网站建设方案,wordpress怎么去掉,wordpress模板框架,网站模板 自适应概述
Spring中Aware到底是什么意思#xff1f;
我们在看Spring源码的时候#xff0c;经常可以看到xxxAwarexxx的身影#xff0c;通常我会很疑惑#xff0c;Aware到底是什么意思呢#xff1f; 比如图片中这些包含Aware关键字的类或者接口。 我对下面3个类或接口进行了解…概述
Spring中Aware到底是什么意思
我们在看Spring源码的时候经常可以看到xxxAwarexxx的身影通常我会很疑惑Aware到底是什么意思呢 比如图片中这些包含Aware关键字的类或者接口。 我对下面3个类或接口进行了解释来体会下aware的含义。 ApplicationContextAwareProcessor可识别应用上下文的处理器。 BeanFactoryAware实现BeanFactoryAware接口的Bean希望意识到BeanFactory。 EnvironmentAware任何实现了EnvironmentAware接口的bean希望去被通知当Environment运行的时候。 aware本身的意思是“知道的明白的察觉到的意识到的有……意识的有……知识的”结合上面的类型或接口的解释个人认为spring中aware的意思是“可识别的可意识的”。 因此再碰到包含Aware关键字的接口或类时我们可以把它理解成这个类或实现了该接口的bean都是可以识别xxx的。 那问题来了识别什么呢个人认为 应该是可以识别Aware形容的组件。 比如ApplicationContextAwareProcessor是指可识别应用上下文的处理器。 BeanFactoryAware是指可以被识别的beanFactory因此所有实现了BeanFactoryAware的bean都是能够识别BeanFactory就是可以识别BeanFactory的bean。
Aware的作用
Spring 的依赖注入最大亮点就是所有的Bean对Spring容器的存在是没有意识的感知不到Spring容器的存在。 在实际项目中我们不可避免的要用到Spring容器本身提供的资源这时候要让Bean主动意识到Spring容器的存在才能调用Spring所提供的资源这就是Spring Aware。其实 Spring Aware是被Spring设计为框架内部使用的若使用了你的 Bean将会和Spring框架耦合所以自己不单独使用。 通常使用 Spring Aware的目的是为了让 Bean获得Spring容器的服务。 在大多数情况下我们应该避免使用任何 Aware 接口除非我们需要它们。实现这些接口会将代码耦合到Spring框架但是希望看过本博客内容之后阅读框架源码不再迷惑。
Aware使用示例
下面是一个实现BeanFactoryAware、ApplicationContextAware接口获取BeanFactory、ApplicationContext的示例。
public class Person implements BeanFactoryAware, ApplicationContextAware {private int id;private ApplicationContext applicationContext;private BeanFactory beanFactory;public int getId() {return id;}public void setId(int id) {this.id id;}public ApplicationContext getApplicationContext() {return applicationContext;}public void setApplicationContext(ApplicationContext applicationContext) {this.applicationContext applicationContext;}public BeanFactory getBeanFactory() {return beanFactory;}public void setBeanFactory(BeanFactory beanFactory) {this.beanFactory beanFactory;}
}参考
Spring Aware 到底是什么