建设网站找网络公司,seo网站页面f布局,网站建设新手教程视频教程,wordpress主题邮件模板下载IOC#xff1a;即“控制反转”#xff0c;不是什么技术#xff0c;而是一种思想。使用IOC意味着将你设计好的对象交给容器控制#xff0c;而不是传统的在你的对象内部直接控制。本篇文章主要讲解一下IOC底层实现的原理(反射)#xff0c;Bean容器的实现#xff0c;就不对I…IOC即“控制反转”不是什么技术而是一种思想。使用IOC意味着将你设计好的对象交给容器控制而不是传统的在你的对象内部直接控制。本篇文章主要讲解一下IOC底层实现的原理(反射)Bean容器的实现就不对IOC的概念进行详述了。在Spring的配置文件中经常看到如下配置那么通过这样配置Spring是怎么帮我们实例化对象并且放到容器中去了了对就是通过反射下面是Spring通过配置进行实例化对象并放到容器中的伪代码//解析元素的id属性得到该字符串值为“courseDao”String idStr courseDao;//解析元素的class属性得到该字符串值为“com.qcjy.learning.Dao.impl.CourseDaoImpl”String classStr com.qcjy.learning.Dao.impl.CourseDaoImpl;//利用反射知识通过classStr获取Class类对象Class cls Class.forName(classStr);//实例化对象Object obj cls.newInstance();//container表示Spring容器container.put(idStr, obj);通过解析xml文件获取到id属性和class属性里面的内容利用反射原理获取到配置里面类的实例对象存入到Spring的bean容器中。当一个类里面需要应用另一类的对象时Spring的配置如下所示我们继续用伪代码的形式来模拟实现一下Spring底层处理原理//解析元素的name属性得到该字符串值为“courseDao”String nameStr courseDao;//解析元素的ref属性得到该字符串值为“courseDao”String refStr courseDao;//生成将要调用setter方法名String setterName set nameStr.substring(0, 1).toUpperCase() nameStr.substring(1);//获取spring容器中名为refStr的Bean该Bean将会作为传入参数Object paramBean container.get(refStr);//获取setter方法的Method类此处的cls是刚才反射代码得到的Class对象Method setter cls.getMethod(setterName, paramBean.getClass());//调用invoke()方法此处的obj是刚才反射代码得到的Object对象setter.invoke(obj, paramBean);通过上面对Spring底层原理的分析可以发现其实并不难用到的都是反射机制通过反射实例化对象存入到Spring的bean容器中。只要在代码或配置文件中看到类的完整路径(包.类)其底层原理基本上使用的就是Java的反射机制。