当前位置:编程学习 > JAVA >>

spring学习笔记(IOC-控制反转)

Spring为编写企业应用程序提供了轻量的解决方案,同时仍然支持使用声明式事务、 用RMI或web service远程调用、以及使用多种方式来将数据持久化到数据库。

和其他框架一样:spring也有一个主配置文件:applicationContext.xml。

IOC:控制反转。也有人这样叫;DI:依赖注入。

AOP:面前切面编程。

所谓控制反转:以前我们要调用某个类的方法。首先是new这个类。然后再调用这个方法。控制权在我们自己手上。反转:顾名思义就是控制权交换了角色。由spring来为我们创建对象了。而不是自己创建了。这里就用到了一个设计模式:工厂模式:实际上spring创建的对象就是由工厂来完成的。我们就能获取到该对象。

首先来看一个简单的例子:有一个person类。它有work的方法。现在我们要在客户端调用这个方法:如果不用spring的话。肯定就是直接new一个对象调用了。

现在我们让spring来为我们创建这个对象。首先要在applicationContext.xml里编写一个bean类。

[java] 
<span style="white-space:pre">  </span><bean id="chinese" class="com.young.person"></bean> 
在客户端调用:
[java]
<span style="white-space:pre">  </span>ClassPathResource cpr=new ClassPathResource("applicationContext.xml");//加载配置文件 
    XmlBeanFactory factory=new XmlBeanFactory(cpr);//获取类工厂对象 
    Person chinese= (Person)factory.getBean("chinese");//获取类对象 
    System.out.println(chinese.sayHi("张三"));//调用方法 
就可以了。这样看是不是很麻烦呢。是的。这样看的确不如直接new一个对象简单。但是。如果你的项目大了。你就能省很多事了。
那我们在来一个复杂一点的。现在person类要借助工具来工作。我们再写个接口Tools工具,它有一个方法getHelp。在一个toolsA实现tools工具里的方法。

首先。我们可以在person类中写一个私有的Tools变量。然后给他加上setter方法。在work方法中直接用这个变量直接调用getHelp方法就行了。
我们还是要在applicationContext.xml文件中配置这个toolsA实现类。然后把他放到person的bean中。

[java]
<span style="white-space:pre">  </span><bean id="tool" class="com.young.toolsA"></bean> 
    <bean id="person" class="com.young.person"> 
    <property name="这是person类里的接口的变量名" ref="tool"></property> 
    </bean> 
如果还要调用其他的也就可以直接写好实现类。在person类中存放一个类变量。或接口也行。
然后在配置文件中配置实现类。并将其放进person类的属性值里。就能直接调用了。

这就是传说中的依赖注入。或者说控制反转。再你调用方法之前。它会自动帮你创建好对象。以上其实是依赖注入的其中一种方式:还可用构造器来注入值。例:www.zzzyk.com

[java] 
<span style="white-space:pre">  </span>public person(Tools t,Test tt){ 
        this.t=t; 
        this.tt=tt; 
    } 
如果是这样配置的。那么在配置文件中也要改了。不能再用property属性了。
[java] 
<span style="white-space:pre">  </span><constructor-arg ref="test"></constructor-arg> 
    <constructor-arg ref="tool"></constructor-arg> 


作者:yy008871
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,