ApplicationContextAware打
2019-02-01 本文已影响0人
但时间也偷换概念
简介:
ApplicationContextAware也是Spring提供的拓展性接口,可以让我们拿到 ApplicationContext实例,然后我们可以利用这个实例做一些bean的信息获取。
最常见的应该就是利用它来获取bean的信息,以及封装成Spring工具类

如下图,就是利用ApplicationContextAware编写成一个工具类,可以主动从spring容器中获取bean,主要场景在static方法中获取bean的时候,无法使用@Autowared方式,那么这种工具类的方式就比较方便了。
还有在动态扫描某接口实现的时候,也可以拿到ApplicationContext对象进行获取
API如下图

测试样例:

由于我是利用ImportBeanDefinitionRegistrar注入的实现类,所以beanDefinition直接给bean取的类路径全称作为beanName。
如果你自己使用@Service注解,相对应把getInstance第一个参数换成自己取的beanName就可以(默认首字母大写类名)。