java ioc_Java Ioc详解和实现

本文详细介绍了Java Spring中的Ioc(控制反转)和DI(依赖注入)概念,强调了理解Java反射原理的重要性。通过一个简单的模拟Ioc实现,展示了如何创建一个Bean工厂并使用配置文件生成Bean对象。最后,提供了项目源码下载链接,帮助读者更深入地理解Ioc和DI的工作机制。
摘要由CSDN通过智能技术生成

作者:竹竿

这章我们讲Java Spring的Ioc控制反转,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

6297351a453396227b89f517c8e826e8.png

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

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

06910686e06b2e6a94625301da7c1a3d.png

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

56b675ccfacc98fa142a5434a0d121d0.png

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

1a389136e00930e1898777c46280bbb0.png

看一下运行结果

c940f80e7ef0af2ed4bcf76c8f9e4454.png

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

d9bd8abf95138c1200e9978296c184a8.png

这就是整个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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值