Spring依赖注入(DI)的三种方式,分别为:
1. 接口注入
2. Setter方法注入
3. 构造方法注入
下面介绍一下这三种依赖注入在Spring中是怎么样实现的。
首先我们需要以下几个类:
接口 Logic.java
接口实现类 LogicImpl.java
一个处理类 LoginAction.java
还有一个测试类 TestMain.java
Logic.java:
--------------------------------------------------------------------------------------------------------------------
packagecom.spring.test.di;
publicinterfaceLogic {
publicString getName();
}
LogicImpl.java如下:
--------------------------------------------------------------------------------------------------------------------
packagecom.spring.test.di;
publicclassLogicImplimplementsLogic{
publicString getName(){
return"fengyun";
}
}
TestMain.java
--------------------------------------------------------------------------------------------------------------------
package com.spring.test.di;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
//得到ApplicationContext对象
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"applicationContext.xml");
//得到Bean
LoginAction loginAction = (LoginAction) ctx.getBean("loginAction");
loginAction.execute();
}
}
LoginAction.java 会根据使用不同的注入方法而稍有不同
下面按照注入的方法来看LoginAction.java类
Setter方法注入:
packagecom.spring.test.di;
publicclassLoginAction {
privateLogiclogic;
publicvoidexecute() {
String name =logic.getName();
System.out.print("My Name Is "+ name);
}
/**
*@returnthelogic
*/
publicLogic getLogic() {
returnlogic;
}
/**
*@paramlogic
*thelogictoset
*/
publicvoidsetLogic(Logic logic) {
this.logic= logic;
}
}
定义了一个Logic 类型的变量 logic, 在LoginAction并没有对logic 进行实例化,而只有他对应的setter/getter方法,因为我们这里使用的是Spring的依赖注入的方式
applicationContext.xml配置文件如下: