zoukankan      html  css  js  c++  java
  • Java Ioc详解和实现

    作者:竹竿

    这章我们讲Java SpringIoc控制反转, DI依赖注入。

    阅读此文之前,必须深入理解Java反射原理。

    1、 Ioc控制反转

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

    2、 DI注入

    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。内容都一样,只是类名不一样

     

    定义一个Spring配置文件,我们起名字叫IocConfig.xml

     

    下面我们来看一下TestIoc.Java文件

     

    看一下运行结果

     

    通过这个文件我们可以看出,我们先创建了一个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实现不一样,但是原理都是一样的。

    项目源码下载地址:http://pan.baidu.com/s/1pKtO5L5

  • 相关阅读:
    JDK,JRE,JVM,三者,你知道它们的关系么
    Linux防火墙机制
    mysql数据可以连接到myeclipse当中需要知道的语法
    mysql数据库常用命令
    修改mysql默认编码重启后又还原,且在修改my.ini配置文件出现1067错误的解决办法。
    MySQL 5.5 Command Line Client 打开出现闪退(错误)的解决办法
    修改mysql 的初始密码
    linux命令的续行,linux shell 参数换行(标准说法:续行)
    java面试(反射)05
    java面试(进程和线程)04
  • 原文地址:https://www.cnblogs.com/chengxuyuanzhilu/p/5189221.html
Copyright © 2011-2022 走看看