spring有两大特点:依赖注入和切面(AOP)编程。
以下用代码说明什么是依赖注入。
首先看以下这个类,铅笔可以被学生用,Student和Pencil紧耦合。
package myProject; public class Pencil extends Pen{ private Student student; public void setStudent() { this.student=new Student();//Student和Pencil紧耦合 } }
但是,通过依赖注入,对象中的依赖关系将由系统中的第三方组件在创建对象的时候设定。对象无需自己创建或者管理依赖关系。再看以下代码。
package myProject; public class Pencil extends Pen{ private Person person; public void setStudent(Person person) {//person被注入进来 this.person=person; } }
上边的代码,在构造的时候注入进来,即依赖注入的方式之一:构造器注入。而且注入的对象可以是任意实现了Person接口的类。
那么,我们该怎么把Person类注入到Pencil中呢,也即装配。xml即是一种常用的装配方式。
<bean id ="pencil" class="myProject.Pencil"> <constructor-arg ref="student"/> </bean> <bean id ="student" class="myProject.Student"> </bean>
以上就是依赖注入的例子。