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 ,