SpringIOC 实现原理

Spring,一个超级牛的框架,与其单词的含义一样,代表的程序员的春天的到来。目前随着发展,spring已经

构建成一个完整的生态链。所以任何时候去研究它的思想,处理方式都不会过时。今天,简单的总结一下spring

的核心IOC的实现原理。

SpringIoc ,spring管理bean的容器,容器简单的来说就是盛东西的,spring的bean 究竟放在哪里的呢,在DefaultSingletonBeanRegistry中有个singletonObjects=new ConcurrentHashMap<>(256);

这个就是单例对象放的存放的地方,所以说他是容器。

很多人都知道聊到IOC一定绕不开两个词控制反转和依赖注入。从我个人理解来看,控制反转是思想,依赖注入是实现方式。

拿使用spring和没有使用spring进行对比

class  A {

   B  b;

  public A(){};

  public A(B b){

      this.b=b;

 };

}

 

class B{

   public string name;

}

没有spring 之前,如果要使用类A,需要 A a=new A();如果还要使用A中B ,需要a.setB(new B()),或者 在new A的时候就A a=new A(new B());

也就说由开发人员去关注B在什么时候生成。

在使用spring之后呢,只需要

 class A{

  @autowired

   B b;

}

<bean id='a' class='A'>

我们在使用A使用A时,A a=applicationContext.getBean(A.class);

new A,new  B这个事情谁做了呢,这里就是Spring IOC帮我们做了,控制反转了,而依赖注入就是B怎么被设置到A类上,就是IOC

能够检验出A上有对B依赖,会把B注入A.

在学习spring源码时,可以通过ClassPathXmlApplicationContext 这个类中refresh去学习

 

 

posted @ 2020-11-01 09:00  打打球,写程序  阅读(48)  评论(0)    收藏  举报