发表于: 2017-09-08 23:48:20
1 730
今天完成的任务
自己试着手写了一个Spring DI的实例,虽然很简单,但是实际写起来确实非常困难..
首先说一下思路,我是打算做出一个能通过修改xml文件,来调用继承同一接口的不同子类。
1.首先为业务类设计一个接口
package IoDi;
public interface iocInt {
void hello();
}
其次设计出继承这个接口的两个子类
public class iocA implements iocInt {
public void hello(){
System.out.print("assssssssssssssssssssss");
}
}
public class iocB implements iocInt {
public void hello() {
System.out.print("aaaaaaaaaaaaaaaab");
}
}
为了减少代码量,接口只定义了一个方法
2.定义一个映射xml的实体类
import IoDi.iocInt;
public class icarus {
iocInt iocint;
public void setIocInt(iocInt iocint) {
this.iocint = iocint;
}
public void getIocint() {
iocint.hello();
}
}
在此,我犯了以下错误
1.低级错误 我在定义iocint的类别的时候,定义的是String属性
2.惯性思维导致创建getIocint()方法的时候,方法体写的是 return iocint;导致后来编译时出错
iocint.hello()调用的是业务类的方法,而return iocint返回的是iocint的地址?
3.设计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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="IC" class="ioclass.icarus">
<property name="iocInt" ref ="a"/>
</bean>
<bean id="b" class="IoDi.iocB"/>
<bean id="a" class="IoDi.iocA"/>
</beans>
虽然非常简单,但是写出来也着实费了一番功夫
其中我们通过更改ref=“a”的值来决定主方法调用哪一个业务类
在此我遇到的问题
1.property name“iocInt”报红,原因,因为在实体类写的是String iocInt,与实际调用的类不符
2.ref显示空指针,原因,因为我忘记删除写错的bean导致两个小时都在查资料是为什么...
4.调用的方法
public class test {
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"iotest.xml"});
icarus Iocals = (icarus)context.getBean("IC");
Iocals.getIocint();
}
}
没什么值得注意的
调用业务类里面的方法,就能通过xml里ref的不同,调用不同的业务类
明天计划的事情
接着深入spring
遇到的问题
在上面一并说了
收获
深入了spring..
评论