Spring注解怎么起作用!!

一直以来,我都非常好奇这个spring注解是如何起作用的,为什么一个@Autowired注解就可以实现属性的注入,为啥@NotNull就可以对属性进行非null的判断。它的实现过程的是什么呢?
起初我想的是,注解嘛,实现过程肯定在注解里面,于是我ctrl + 左键点到注解里面去,我去,是个接口一样的东西,就像下面这样:
在这里插入图片描述
关键我也看不懂那是啥呀??我就看到的就是一个接口文件加一些类似方法的东西。但是我还是没看到具体的实现过程。于是乎这个问题我搁置了一段时间,终于在一个疲惫的午后,我看到了公司自己封装的注解了,哇靠,我都看不懂,到底实现源码在哪里呀,于是我终于忍不住了,到知乎翻看了很多相关的文档,我发现了一个重要的结论。那就是spring注解的实现是很多很多我看不懂的源码组成的。这些注解的实现是实实在在存在的。而不是说厉害到,我单单给它加个@Autowired, 它就能够帮我注入的,这里面的实现代码很多很多。而具体这些常用注解是怎么实现的呢?我说实话我现在看不懂,所以我也不拿出来分析了,省的误导大家。但是我所知道的是:对于一个类,比如下面这样的:
比如上面在这里插入图片描述
比如wxh2这个类,这个类的name属性上有@Autowired注解,java可以通过反射机制知道这个属性上有这个注解,然后根据这个注解,执行spring事先写好的让这个注解的起作用的代码,然后完成注入。所以我们可以进而得出一个结论,那就是并不是@Autowried完成自动注入了。而是@Autowired标记在某个属性上,使得实现代码知道,哦,你这是个@Autowired, 那要执行的自动注入啦。其实我的理解是:spring设计了@Autowired和它起作用的代码。然后人家告诉我们,你们要用@Autowried哦,用它可以实现自动注入哦。
所以以后我们要是想知道某个注解到底是干啥用的。用两种方式,第一种是靠平常的记录积累,比如,我就记得你这个@Autowired是用来注入属性的;第二种就是自己去看看实现代码吧。我推荐初级程序员用第一种,我是入门菜鸟,我肯定用第一种。(后续我会出一个注解大全,所有我遇到的常用注解的作用,我尽量用最简单干脆的话说明白它们的作用)
看到这边的小伙伴肯定觉得我是个辣鸡,确实,我大四,水平很渣,所以这里有两篇知乎大佬的关于注解的解释,大家多看几遍,一起进步吧。如果我有说错,请评论区指教。
第一篇:https://zhuanlan.zhihu.com/p/27643133
第二篇:https://www.zhihu.com/question/47449512/answer/658228092

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值