Spring Aware总结

阅读: 评论:0

Spring Aware总结

Spring Aware总结

参考

Spring中Aware到底是什么意思

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 到底是什么?

本文发布于:2024-02-05 07:56:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170727826264733.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Spring   Aware
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23