Spring IOC原理

原理:一般指的是代码的实现 以及涉及到的技术
一:以xml的形式来说
1.主要涉及到xml解析技术 以及 反射机制 还有实例存储的数据结构(容器)
1)xml解析技术: 包括dom4j 以及jdom支持xpath… 功能更强大 推荐使用
2)反射机制: 首先得获得类的全路径,该类还得有构造器,如果你要是写了有参构造器的话,必须得显示写无参构造器。默认情况下,该类是自带无参构造器。
然后Class.forName(“xxx.xxx.xxx.User”).newInstance 会构建一个实例 利用无参构造器。
3)容器:
特点:根据唯一标示 获取该实例
容器底层的数据结构:采用Map集合构架承载实例与ID的角色
二 :以注解的形式来说
利用反射机制获得注解 进行对该类实例化
IOC 和 D I
IOC:控制反转 控制指的是什么?反转指的是什么?
控制:指的是构建实例的控制权 以前构建实例的权利由我们开发人员来new出来,包括依赖关系的注入,此时实例的控制权为引用类,现在有了spring,构建实例的权利交给spring来接管,反转控制就是反转了对象的创建方式,从我们自己创建反转给力程序(spring)
反转:控制权由其他类(引用类)转为spring了
D I:依赖注入 依赖是什么?注入又是什么?
依赖:指的是A类 要引用B类 那么我们就说A依赖B
注入:A既然依赖B 那么B类何时初始化呢?为了解决耦合度的问题 不能再A类中new B了 需要靠spring将B类的实例传递给A,该过程叫做注入
耦合度问题:A依赖B才能完成特定的功能。该B为一个借口,实现类有多个Bimpl_1 Bimpl_2各有不同。
以前A可以直接使用Bimpl_1 那么我们就说A与Bimpl_1 紧密联系在一起了,耦合度很高
现在A依赖Bimpl_1 的接口即B,B接口的实现由Spring来控制注入Bimpl_1 或者Bimpl_2.即A与Bimpl_1 实现了解耦(多态 多种形式表现)
IOC 和 DI的区别:
先有了IOC 将实例构建出来 才能DI

你可能感兴趣的:(Java,Spring)