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去学习

浙公网安备 33010602011771号