从零搭建SSH项目之Spring2.0项目

    这篇文章是接着上面文章《从零搭建SSH项目之Hibernate3.3项目》继续的Spring搭建的小例子。在此主要是介绍一下Spring里常用的两概念IoC和AOP。这两个名词相信很多同仁都见过,作为初学者当初本人也是对两个名词充满了神秘感,不知道到怎么去理解。IoC的全称就是Inversion of Control(反转控制)或者称之为依赖注入。在我们平时的项目中常见的依赖注入主要是有三种:1、接口注入;2、构造方法注入;3、set/get注入。到这里可能对依赖注入具体是什么意思还是不太明白,下面通过一个小例子来大致介绍一下注入的概念。
    项目需求:某旅游公司在远古时代就建立了自己的公司,这个时候要行者讲述从北京前往郑州的趣闻趣事。
    项目分析:远古时代只能步行前往,所以实现起来比较简单。实现如下:
package com.qingfeilee.travelstroy;

public class BJtoZZ {
	public void tellStory(){
		System.out.println("我步行从北京出发前往郑州,见识到了很多不同村庄的生活方式的差异并遇到了很多有趣的人~");
	}
}
     对这个项目进行测试,代码如下:
package com.qingfeilee.travelstroy;

public class TestBJtoZZ {
	public static void main(String args[]){
		BJtoZZ bz = new BJtoZZ();
		bz.tellStory();
	}
}

     转眼间时间到了八九十年代已经有了火车,该公司要对这个火车线重新探索,要求同上。
     这个时候,有汽车。这个时候我们该怎么做呢?实现如下:
package com.qingfeilee.travelstroy;

public class BJtoZZ {
	public void tellStory(){
		System.out.println("我乘坐火车从北京出发前往郑州,通过窗口看到了伟大的黄河~");
	}
}
对这个项目进行测试,代码如下:
package com.qingfeilee.travelstroy;

public class TestBJtoZZ {
	public static void main(String args[]){
		BJtoZZ bz = new BJtoZZ();
		bz.tellStory();
	}
}
这个时候会发现系统出现了问题,这个时候已经不能满足现在的需求,更何况当代可选择的方式如此的丰富。怎么解决呢?可以通过IoC来解决这个问题,下面就通过接口依赖注入来解决这个问题。实现方式如下:
第一、定义IBJtoZZ接口
package com.qingfeilee.travelstroy;

public interface IBJtoZZ {
	public void tellStory();
}
第二、业务类来实现IBJtoZZ接口
package com.qingfeilee.travelstroy;

public class BJtoZZByTrain implements IBJtoZZ {
	public void tellStory(){
		System.out.println("乘坐火车从北京前往郑州");
	}
}


package com.qingfeilee.travelstroy;

public class BJtoZZByPlane implements IBJtoZZ {
	public void tellStory(){
		System.out.println("乘坐飞机从北京前往郑州");
	}
}


package com.qingfeilee.travelstroy;

public class BJtoZZByBus implements IBJtoZZ {
	public void tellStory(){
		System.out.println("乘坐汽车从北京前往郑州");
	}
}

第三、对项目进行测试
package com.qingfeilee.travelstroy;

public class TestBJtoZZ {
	public static void main(String args[]){
		BJtoZZ bz = new BJtoZZ(new BJtoZZByPlane());
		bz.tellStory();
		
		bz = new BJtoZZ();
		bz.setBJtoZZ(new BJtoZZByWalk());
		bz.tellStory();
		
		bz = new BJtoZZ();
		bz.bindBjToZZ(new BJtoZZByBus());
		bz.tellStory();
	}
}

测试结果如下:
乘坐飞机从北京前往郑州
步行从北京到郑州
乘坐汽车从北京前往郑州
至此、这个项目的设计和实现已经完成。上述就用到了IoC解决了我们刚开始遇到的问题。这样增加了项目的灵活性并增加了代码的重用。
明天将通过一个项目日志系统的例子来大致介绍一下AOP的原理,通过日志的实现来理解AOP的概念。
欢迎拍砖,互相交流学习。




你可能感兴趣的:(spring,AOP,Hibernate,ssh,IOC,Class)