今儿跟同事讨论起来spring早期的,通过大篇幅xml的配置演变到今天annotation的过程,然后随手写了个小例子,感觉还不错,贴到这里留个纪念。
例子就是用JAVA API的方式,演示了一下DI的注入模式,但因我对设计模式了解的比较少,那本书躺了很久都没时间去看,所以理解的有些幼稚,随后等复习到spring那的时候,详细会有更好的答案。
例子就是用JAVA API的方式,演示了一下DI的注入模式,但因我对设计模式了解的比较少,那本书躺了很久都没时间去看,所以理解的有些幼稚,随后等复习到spring那的时候,详细会有更好的答案。
package com.test;
/**
* Created with IntelliJ IDEA.
* User: 菜鸟大明
* Date: 14-6-30
* Time: 下午12:06
* To change this template use File | Settings | File Templates.
*/
/**
* 接口Word,其中有一个spell方法。
*/
interface Word{
String spell(String x,String y);
}
/**
* 开始编写上下文
*/
public class SpringDISample{
// 声明一个句柄
Word word;
// 将句柄指向实例,也就是Word的实现类。
public void setWord(Word word) {
this.word = word;
}
// 核心的方法say,对外暴露一个接口方法,spell()。
public void say (){
System.out.println("before");
System.out.println(word.spell("小明", "小熊"));
System.out.println("after");
}
}
/**
* Word接口的实现类,填充spell的内容。
*/
class ImpWord1 implements Word{
@Override
public String spell(String x, String y) {
return x + "的朋友是" + y;
}
}
/**
* Word接口的实现类,填充spell的内容。
*/
class ImpWord2 implements Word{
@Override
public String spell(String x, String y) {
return x + "的同事是" + y;
}
}
/**
* 相当于springDI的容器。
*/
class Main {
// 容器启动
public static void main(String[] args) {
// 创建DI容器
SpringDISample springDISample = new SpringDISample();
// new出Word的实现类ImpWord1,并注入到springDISample的say方法里。
springDISample.setWord(new ImpWord1());
springDISample.say();
System.out.println("***************************************");
// new出Word的实现类ImpWord2,并注入到springDISample的say方法里。
springDISample.setWord(new ImpWord2());
springDISample.say();
}
}