Spring IOC 的实现基础

    在<>中讲到Spring IOC。现在来分析IOC(inverse of control,翻译控制反转,具体的理解见上篇blog的分析)。IOC在某种程度上极大地降低了程序之间的耦合性。那它是如何做到的呢?

   我们知道在配置文件中定义bean,问题来了,简单的字符串的定义信息,如何实例化对象的呢?
   在JAVA中有一个反射(Reflect)的东东,反射是什么,就是它不是原来本身的东西,是反射过来的(水面成像--&gt映像),通过水面倒影就知道你长什么样子了。在医学上的X光,看看你身体内部的情况如何。
   我们一般在使用对象时,先new一个具体的类,现在把类的信息都写在配置文件中,反射简单言之,可以通过一个类名就可以生成一个对象,然后来操作其方法。

   写一个例子来体会下:
   package com.oracle;
         public class Demo {
              public void show(){
                    System.out.println("I am showing...");
          }
    }

  package com.oracle;
        public class ReflectionDemo {
          public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
              Class reflectdemo=null;
              reflectdemo =Class.forName("com.oracle.Demo");//bean 的信息不也是字符串吗
              Demo d=(Demo)reflectdemo.newInstance();    //与普通的new不一样。
              d.show();
         }
   }

  反射的本质是:所有的成员和方法都由相应的Class信息,否则系统无法来检测和控制。

  还有一个问题,我们在getBean()是传递一个beanid字符串,那么它是如何来实现的,其实是工厂方法。这样做的目的是隔离效果。

  工厂里有很多的bean,每个bean有它的唯一标识,现在你传什么标识,我就返回对应的bean对象。
  以上是IOC的实现基础。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30024515/viewspace-1365747/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30024515/viewspace-1365747/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值