spring IOC容器

来源:互联网 发布:最全生活网络理财投资 编辑:程序博客网 时间:2024/06/05 23:43

1为什么使用spring
我们知道任何一个应用都需要用到多个类(并不是所有的应用都像Hello the world ),既然有多个类,那么久涉及到了多个之间的协作,多个类之间如何协作呢,当然是靠通信了(就像我们人与人之间)。比如我们开发了一款软件,比如eclipse。我们知道eclipse有若干个组成部分(面板1,面板2,面板3,按钮1,按钮2,按钮3,下拉菜单1,下拉菜单2,下拉菜单3,啊好痛苦写不下去了),我们将每一个组成部分对应一个类。好了eclipse应该是这样的。

public class Eclipse{    Panel1 panel1;    Panel2 panel2;    Panel3 panel3;    ....    ...    ..    .}

好了,我们该启动一下这个Eclipse了。

public class Boot{    public static void main(String[] argv){        Panel1 p1=new Panel1(......);        Panel2 p2=new Panel2(.....);        Panel3 p3=new Panel3(.....);        .....        Eclipse eclipse=new Eclipse();        eclipse.panel1=p1;        eclipse.panel2=p2;        eclipse.panel3=p3;        .....        ..        .    }}

如果你是写Boot那个类的程序员,我不知道你会有什么想法,我只会骂娘,靠这段代码如此简单, 只是把eclipse的各个面板,按钮等等实例化了,然后传递给Eclipse实例,然后自己写代码写到手抽筋。好了,为了不让你写到手抽筋,你可以使用spring了, 在大家开发的时候你可以告诉他们,让他们每写好一个类,就到配置文件中配置一下。然后:

public class Boot{public static void main(String[] argv){ApplicationContext context=new ApplicationContext(....);Eclipse eclipse=(Eclipse)context.getBean("Eclipse");}}

高兴了吧,虽然做的事情依旧没有技术含量,但是至少不用写代码,写到手抽筋了。
好了前面的例子在扯淡,Eclipse根本不会设计成这个烂德行,spring的精髓也并不是让你把工作量分担给同事。
spring的精髓是IOC容器。生么是IOC容器呢?就是对IOC规范的实现
就是依赖注入这种规范的实现。这就好比我们运行java代码都需要jvm,但我们都知道jvm只是一个规范,而我们用到hotspot,jrocket等等才是jvm的具体实现。
好了生么是IOC:Inversion of Control,控制反转,有时候也叫DI,dependence injection,依赖注入。
好了,你只需要记住ioc,di只是个名字而已,就和某人叫xxx一样。好了,现在讲一下ioc,和di的精髓,就是我们将一个类写好了之后,然后在spring的配置文件中进行配置。当我们在某个程序段中需要用到某个类的一个实例(并不是所有的类都是无参的,并不是所有的类的实例你都会初始化),你直接通过这个实例对应的名称就可以了。比如就像我上面的那个Eclipse的例子。spring IOC容器,就相当于一个巨大的Map

0 0