Spring 作为一款非常受欢迎的开发框架,受到很多人的使用,但是Spring的底层是怎么实现的呢?

有人说:Spring是轻量级的DI/IOC与AOP的容器框架,没错
但是就说这些足够了吗?

通过查看Spring的底层代码,我总结了如下的Spring底层的实现原理:

spring dao层注解 spring中注解的底层实现原理_框架底层实现


首先他是一个容器 ,他需要通过扫描配置文件中的bean, 然后通过扫描对应的包,然后通过找到注解

spring dao层注解 spring中注解的底层实现原理_spring dao层注解_02


1.其实这里注解的作用基本都是一样的,但是为什么要弄出四个注解来,其实这些注解就是索引,不用扫描的时候去一一比对,哪里是controller,哪里是service,有效提高效率.

2.当Spring发现没有此对象的时候,就会帮助new 一个出来,这里new出来的是单例模式,

spring dao层注解 spring中注解的底层实现原理_spring_03


3.此时注入,如果没有发现此对象就会报错,一般忘了加注解就会报错,就是这个原因

4.如果是你自己new的 ,不是spring通过扫描包 new 的,spring就不能正确注入,此时你new出来的对象为null,而Spring得不到对象注入,就会报错

总结: IOC是控制反转,以前是自己new,现在是Spring帮我们new ,那么Spring的底层是什么样的呢,
Spring有一个容器叫IOC,虽然他的名字叫控制反转,但是我们可以把它理解为容器,他开辟了很多注解,但是我们需要了解最重要的四个注解@service ,@controller,@response,@commonent.
这四个注解会在这个容器中开辟四个空间,这样是为了好找,不用一一去比对,对应的放在对应的里面
@Autowired这个注解会到spring的bean 如果找到了就把它拿出来,如果没找到就会报一个"没有找到bean的错误"
那么是怎么关联上的呢,Spring在帮我们new的时候,在第一次用的扫描的注解会帮我们new 出我们想要的实现类,
下次用@Autowired 的时候直接拿来用就可以了,这就是IOC