ssh架构什么情况要用反射?

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:53:48
ssh架构什么情况要用反射?
给举个通俗易懂的例子吧

整个spring的核心是面向接口编程,举个例子
(常规的编程是基于类依赖的 如在类A中,通过B b=new B()的方式建立依赖关系,因为A中要完成某个功能需要用到类B,那么类A依赖类B,所谓面向接口即B实现自某个你定义的接口C,在类A中通过C c=new B()的方式获得类B的引用,这样还并不完善,为了不采用new B()这种方式,通过反射的原理生成B的对象,
spring中的实现方式为C c=context.getbean("b");这样在类A中你将看不到类B的直接存在和实例化操作,而类B的实例化操作是交给了spring的beanfactory来生成并可以通过其上下文ApplicationContext的实例context通过getBean("beanname")的方式来获取类B的实例,其生成的原理就是上面提到的反射。 上面的这一部分就叫做IOC:控制反转或者叫做依赖注入,反转注入都行
通过上面的例子你可以注意到类B的实例化不需要我们自己生成了(通常我们都是自己完成实例化),其实例化交给了spring的beanfactory,一句话类B的实例化从程序员的手动生成 转给了 spring框架生成。 也就是说类B的实例化的控制权从程序员的手里交到了spring框架手里。这就是所谓的控制反转,从人控制到框架控制.因为这有悖于传统的方式顾名思义的叫做控制反转。我觉得叫控制转移或许更合适.

以下是antolife给您的回答,不能保证100%正确,但可给您一个建议。谢谢!

不论struts,spring ,hibernate,webwork等其他任何框架,
都是以反射做为核心技术,极,没有反射,就没有框架。
在struts中,ActionServlet类要通过反射初始化你的所有Action。
在spring中,两大核心技术,反射加代理。楼上的各位达人说的很清楚了。。。。
在hibernate中,你的映射文件怎么和你的表相关联。也是反射。

举个通俗易懂的例子:

Class类有一个forName()方法。这个方法可以加载一个类。产生一个类对象。
然后我们通过这个类对象就可以调