Spring自定义annotation实现

工作两年后,重新再来写这篇博客。

在介绍具体代码之前,首先大家先思考两个问题

  1. 为啥要实现自定义的annotation?
  2. 如何实现自定义的annotation?

首先回答第一个问题,Spring提供的原生annotation只有最原始的几个功能,例如依赖注入。如若需要实现一些其他功能,如dubbo的注册发现,原生的Spring annotation无法提供相应的能力。因此实现自定义annotation可以满足一些扩展功能。

第二个问题,如何实现自定义的annotation。参看Spring原生annotation实现有以下几个步骤,

  1. Spring在类加载时扫描自定义注解,并将注解类生成对应的beanDefinition。
  2. Spring在类实例化时完成自定义类的实现。

回答完上面的问题,下面进入代码环节,代码的功能也很简单就是实现Spring依赖注入功能。
要实现自定义的annotation功能,首先要先定义自定义的annotation。

在这里插入图片描述
在这里插入图片描述
自定义的annotation实现完成后,那怎么才能让Spring类注册时可以扫描我们自定义的annotation呢,也比较简单就是基于Spring 实现一个自定的annotation扫描器,然后将扫描出来的结果注册到Spring的注册器中就可以了。
在这里插入图片描述
既然我们要实现Spring的依赖注入能力,只有Service功能没有Reference功能是不够的,下面就是如何实现Reference功能。参看Spring源码实现Reference只需要在Bean实例化后对Bean实例化后的对象内的属性使用反射注入即可,具体参看代码。

在这里插入图片描述
至此,自定义依赖注入annotation就实现完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值