由Aware引发的思考

2020-05-20  本文已影响0人  撸代码的大白

之前文章讲过,我们学习源码的很大原因是学习一些奇技淫巧。Aware就是其中之一。

spring中Aware是个接口,不要求实现任何方法,它的主要作用是做个标记。

Aware有很多子接口,主要的有以下几个:

BeanFactoryAware:setBeanFactory

ApplicationContextAware:setApplicationContext

EnvironmentAware:setEnvironment

BeanNameAware:setBeanName

简单来说,实现什么Aware就能获得对应的资源。

怎么做到的呢,spring通过后置处理器,判断bean实现了哪些aware接口,然后调用其set方法,将需要的资源,设置到属性中去。

所以如果想在业务类里获得容器,可以实现ApplicationContextAware接口;如果想获取bean工厂,可以实现BeanFactoryAware;如果想获得环境变量,可以实现EnvironmentAware;

抛开spring本身。这也给我们的开发提供了一些思路。接口不但可以规定行为是什么,还可以做为标识来用,甚至标识和行为配合来用。

实现这些接口的对象可以被识别出来,进行统一的设置或者预处理。

可以看作一种划分维度,当然从接口的本来功能理解,这些对象都有setxxx的行为,虽然setxxx是需要外界资源给予的,但仍然是其行为。

也可以理解不那么灵活的依赖注入。

上一篇 下一篇

猜你喜欢

热点阅读