下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Java Spring的Ioc控制反转

作者:课课家教育     来源: http://www.kokojia.com点击数:839发布时间: 2016-02-17 14:24:37

标签: java控制反转java对象java工程

大神带你学编程,欢迎选课

  1、 Ioc控制反转

  原来类对象实例的创建都是有程序员自己通过new进行的。控制反转之后,我们把创建对象的功能交给spring,到时候我们直接用就可以了。

  2、 DI注入

java在中计算出现的两个时间差解决方法_java计算_课课家

  class Bclass

  class Aclass{

  Bclass b;

  比如我们需要用到Aclass的对象Aobject时候,Spring Ioc帮我们创建了一个对象。这时候Aobject 里面的b属性为空。Ioc再创建一个Bclass对象,然后通过set方法让b属性引用到Ioc创建的Bclass对象。

  3、 模拟Ioc实现

  学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现。下面我就写一个Ioc DI的程序。

  Spring就相当于一个Bean工厂,你写好自己的bean,输入配置文件,Spring就可以帮你自动生成bean对象。

  下面我们创建一个java工程SimulateIoc 模拟Ioc

  dom4j包需要,用来解析XML配置文件

  我们先写二个Bean。内容都一样,只是类名不一样

  通过这个文件我们可以看出,我们先创建了一个BeanFactory工厂,然后通过getBean方法获得指定的Bean对象。是不是很神奇,只要通过不同的名字,我们就可以获得我们想要的对象。BeanFactory里面到底做了什么那?

  这就是整个BeanFactory实现了。

  里面很多都是处理xml的部分,我们主要看上面的两个标红的地方。

  Class bean = Class.forName(cls.getText());

  Object obj = bean.newInstance();

  Class.forName获得指定类的类类。newInstance()获得指定类的对象。

  Method entryPoint = bean.getMethod(attributename, String.class);

  entryPoint.invoke(obj,value);

  getMethod获得指定方法的方法调用入口。然后调用invoke就会执行方法。

  如果想深入了解上面四句。可以看看Class文件的反射机制。或者看我的另外一篇文章。

  以上Ioc DI实现过程非常简单,并没有考虑太多干扰因素和功能。所以和Spring实现不一样,但是原理都是一样的。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程