网站建设制作宝塔面板,南宁网站设计方案,1040视频app,有什么教做维c甜品的网站1. 写在前面的话
说实话#xff0c;从事java开发工作时间也不短了#xff0c;对于Spring Framework#xff0c;也是天天用#xff0c;这期间也碰到了很多问题#xff0c;也解决了很多问题。可是#xff0c;总感觉对Spring Framework还是一知半解#xff0c;不能有个更加…1. 写在前面的话
说实话从事java开发工作时间也不短了对于Spring Framework也是天天用这期间也碰到了很多问题也解决了很多问题。可是总感觉对Spring Framework还是一知半解不能有个更加全面的理解。既然这样我就想那就单独抽出一段时间来重新回炉一下Spring Framework这样也能在以后的学习拓宽一下解决问题的思路。 那怎么回炉了我打算以Spring Framework的源码为依据从面到点的慢慢扣一下它的细节这就不得不涉及spring框架的源码阅读环境的搭建这并不是一个特别简单的过程。为此我在春节前根据自己的搭建过程专门写了一篇spring框的源码搭建过程供大家审阅。源码地址如下 https://blog.csdn.net/lvxinchun/article/details/135972648
2. IoC理论
2.1 IoC的概念
IoC英文全程为Inversion of Control中文一般翻译为 “控制反转”就是由 Spring IoC 容器来负责对象的生命周期和对象之间的关系。它并不是特指某个技术而是一种设计思想。
2.2 诠释IoC的概念
IoC被称为控制反转好这里就从“控制反转”这四个字的字面意思来扣一下它更深的含义来加深对IoC的理解。 首先我们说“控制”这是一个动词那它就要有主语和宾语那主语就是谁控制宾语就是控制了什么所以我们首先要理解的就是谁来控制控制了什么 然后我们再说“反转”“反转”这个词本身就是有一种打破常规的意思也就是不再墨守常规而是反过来。那我们就要研究下怎么反转的反转了什么东西 所以诠释IoC的概念就变成了我们要探寻的下面两个问题
谁来控制控制了什么怎么反转的反转了什么东西
2.2.1 谁来控制控制了什么 通过图1我们看到在传统方式下是由客户端类或者启动类主动创建对象即当前对象或者类来控制依赖对象创建、销毁等而在IoC方式下是由IoC容器来主动创建对象即IoC容器来控制依赖对象创建、销毁等。
2.2.2 怎么反转的反转了什么东西 通过图3和图4结合图1和图2我们看到相比于传统方式反转主要体现在两个方面 第一反转了对象的创建方式由客户端类编程了IoC容器 第二反转了对象的组装其实是对象之前的关系维护方式由客户端类组装改为了IoC容器的自动注入 但不论是对象的创建还是组装都是一种对象的控制权所以反转的其实就是对象的控制权生命周期的管理。
2.2.3 小结
所以IoC对编程带来的最大改变是从思想上发生了“主从换位”的变化。应用程序需要任何对象资源都要主动的去创建对象事无巨细的亲力亲为对象的组装而现在只需要从IoC容器中拿所需要的对象就可以了拿到的对象也不需要亲自组装了IoC已经把依赖的对象注入进去了。
3. DI依赖注入
3.1 依赖注入的概念
DI,英文全程Dependency Injection中文翻译为依赖注入很多人说依赖注入就是控制反转是IoC的另外一种理解我觉得这么说是有些牵强的至少是不全面的。在传统方式下如果我们创建的对象还需要其他外部资源对象、常量数据等等那么我们不仅仅要创建当前对象还要创建当前对象所依赖的对象创建完成所依赖的对象还要在将所依赖的对象设置到当前对象中如下面代码
User user new User();
UserDateail detail new UserDetail();
user.setUserDetail(detail);而使用IoC容器我们只需要在xml中定义好对象的关系由IoC来自动创建好各个对象并且会自动将当前对象所依赖的对象注入进来。User对象需要UserDetail对象我们就只需要告诉IoC容器XML的配置User对象中需要一个UserDetail对象至于这个UserDetail对象怎么创建什么时候创建User对象不需要知道。只要在在系统运行时IoC会在适当的时候制造一个UserDetail对象然后像打针一样注射到User对象当中这样就完成了对各个对象之间关系的控制。User对象需要依赖UserDetail对象才能正常运行而这个UserDetail对象是由IoC注入到User对象中的依赖注入的名字就这么来的。
3.2 小结
我认为所谓依赖注入就是由IOC容器在运行期间动态地将某种依赖关系注入到对象之中。所以依赖注入主要体现的是各个对象之间的关系的自动维护和管理而没有更好的体现对象创建权的转变。
4. 对Spring Framework的整体理解
Spring Framework是一个框架在我们使用Spring整个开源体系开发流程中所有的框架几乎都依赖于Spring Framework。Spring Framework帮我们起到了一个IOC容器的作用用来承载我们整体的bean对象它帮我们进行了整个对象从创建到销毁的整个生命周期的管理。在我们使用Spring Framework的时候可以使用配置文件也可以使用注解的方式进行相关实现当我们程序启动开始的时候我们把配置文件或者注解定义好的那些bean对象转换成一个beanDefition,然后完成整个beanDefition的解析和加载过程。当我们获取到这些完整的beanDefition对象之后对整个beanDefintion进行实例化操作在进行实例化的时候最简单的一种方式是通过反射的方式来创建对象bean只是在堆里开辟了一个内存但这没有完成后续一系列初始化操作还会在后面实现awre接口的操作、包括实现一些初始化操作包括我要实现AOP的操作的话可能要执行一些beanPostProcessor操作。当然在beanDefition的环节也会执行一系列beanfactoryPostProcessor的操作来实现相关的扩展操作。当我们整体对象都创建完成之后对象就可以直接调用了。