通过接口方式注入
建议使用前两种方法
Source.java
package com.gary.test;
public class Source {
public void helloWorld(){
System.out.println("Hello World!");
}
}
ISource.java
package com.gary.test;
public interface ISource {
//方法名任意,方法参数是所依赖对象的类型
public void injectSource(Source source);
}
Target.java
package com.gary.test;
public class Target implements ISource{
private Source source;
@Override
public void injectSource(Source source) {
this.source = source;
}
public void sayHelloWorld(){
source.helloWorld();
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-autowire="byType">
<bean id="source" class="com.gary.test.Source" />
<bean id="target" class="com.gary.test.Target" />
</beans>
TargetTest.java
package com.gary.test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TargetTest {
static BeanFactory factory = null;
static Source source = null;
static Target target = null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
try{
factory = new ClassPathXmlApplicationContext("applicationContext.xml");
target = (Target) factory.getBean("target");
source = (Source) factory.getBean("source");
}catch(Exception e){
e.printStackTrace();
}
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void testSayHelloWorld() {
target.injectSource(source);
target.sayHelloWorld();
}
}
源码见附件
本文介绍了一种通过接口方式实现依赖注入的方法。通过定义接口ISource并实现在Target类中,利用Spring框架进行bean的配置与管理,实现了Source类实例向Target类的注入。最后通过单元测试验证了依赖注入及功能调用的正确性。

被折叠的 条评论
为什么被折叠?



