`

项目总结(一个数据采集网站)——Spring

阅读更多

谈到构架,总是会想起前面看到banq写的一篇文章,叫做重与轻的永恒话题。是讨论使用EJB等重量级框架和Spring,Jdon之类的轻量级框架采用POJO实现业务。俺是小人物,没学过EJB,而对Spring倒是有一点了解。所以这次就用Spring了。

这次实现的系统是一个数据采集网站,最后根据管理员所填的数据最一些判断,给出一个评价结果。系统的ER图如下:

http://forum.lingdot.com/UploadFile/2006-5/20065718265790780.jpg

业务不是很复杂,本来也不是很需要使用这些框架的。但作为看了好久Marsting Spring的一个实践,于是就使用了Spring.

不用不知道,一用吓一跳。呵呵。我只是用到了Spring的IoC容器,和Spring对Hibernate的支持部分。感觉,,,好简单。呵呵。如果只是用到这两个部分的话,我觉得Spring药比Hibernate简单的多了。至少我在第一次使用Hibernate的时候写了好久程序自认为没问题了,开始运行却出了一大堆莫名其妙的错误。但Spring,那天写了一些东西,配好了环境,在Hibernate之上使用Spring,竟然一个错都没出。

然后说用这个东西的一点感想。一句话,要不要用Spring这个问题是非常值得考虑的。我想这一次我使用它可能一方面是学习,另外一方面也有“用了Spring,程序含金量会高一些吧,至少可以和人家炫耀我用了Spring了”这样的想法在。
 
于是当这个项目接近尾声的时候,回过头来想Spring在这个系统中所起到的作用,于是一阵郁闷。
 
Spring支持对接口编程。例如我在Spring配置文件中写了一个Bean,
 
1 < bean  id ="userDAO"  class ="com.lingdot.es.dao.UserDAO" >
2      < property  name ="sessionFactory" >
3            < ref  local ="sessionFactory" />
4      </ property >
5 </ bean >
 
那么我在程序中想要获得这样的一个实例的时候,会这样写:
 
UserDAO userDAO  =  (UserDAO)getBeanFromIoC( " userDAO " );
 
其中getBeanFromIoC是我自己写的方法。
 
这里存在一个问题,就是我没有对接口编程,这样导致整个应用依然是依赖于UserDAO这样一个具体类。显然这不是我们想要得。
 
如果我不依赖于具体类,那么势必创建一个接口,
 
public   class  UserDAO  implements  UserDAOI
 
这样我就可以把获得userDAO的实例的代码写成这样:
 
UserDAOI userDAO  =  (UserDAOI)getBeanFromIoC( " userDAO " );
 
由此,我做到了程序与具体类无关。可以说做到了开闭原则。
 
但如此出现了一个问题。只要我想从IoC容器中获取一个bean,那么这个bean类一定对应一个接口,这样才能保证我的应用不依赖于这个具体类。于是,我的每一个业务类,DAO类,都将有一个接口。于是我就想起了一个词——接口污染。
 
究竟怎样才算把握好了接口和针对接口编程,而不会成为一种接口污染,这个度,我想需要很好地把握才行。大型的项目,后期发展的可能性比较大,要求可扩展性能比较好的时候,可能需要Spring,IoC去做到与具体类无关的编程,但是一些小的东西,只怕不用反而更简洁。
 
我到现在也没能很好的评价出这个项目中使用Spring是不是适合。
 
学习的路,还很长。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics