发表于: 2017-09-08 23:48:20

1 729


今天完成的任务

自己试着手写了一个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..


返回列表 返回列表
评论

    分享到