Spring自定义annotation实现
工作两年后,重新再来写这篇博客。
在介绍具体代码之前,首先大家先思考两个问题
- 为啥要实现自定义的annotation?
- 如何实现自定义的annotation?
首先回答第一个问题,Spring提供的原生annotation只有最原始的几个功能,例如依赖注入。如若需要实现一些其他功能,如dubbo的注册发现,原生的Spring annotation无法提供相应的能力。因此实现自定义annotation可以满足一些扩展功能。
第二个问题,如何实现自定义的annotation。参看Spring原生annotation实现有以下几个步骤,
- Spring在类加载时扫描自定义注解,并将注解类生成对应的beanDefinition。
- Spring在类实例化时完成自定义类的实现。
回答完上面的问题,下面进入代码环节,代码的功能也很简单就是实现Spring依赖注入功能。
要实现自定义的annotation功能,首先要先定义自定义的annotation。
自定义的annotation实现完成后,那怎么才能让Spring类注册时可以扫描我们自定义的annotation呢,也比较简单就是基于Spring 实现一个自定的annotation扫描器,然后将扫描出来的结果注册到Spring的注册器中就可以了。
既然我们要实现Spring的依赖注入能力,只有Service功能没有Reference功能是不够的,下面就是如何实现Reference功能。参看Spring源码实现Reference只需要在Bean实例化后对Bean实例化后的对象内的属性使用反射注入即可,具体参看代码。
至此,自定义依赖注入annotation就实现完成了。
还没有评论,来说两句吧...