谈到构架,总是会想起前面看到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是不是适合。
学习的路,还很长。
分享到:
相关推荐
Spring是一个广泛使用的开源Java平台,提供了全面的基础架构支持,用于开发Java应用;Spring MVC是Spring的一部分,它是一个构建Web应用的模型-视图-控制器(MVC)框架;而MyBatis是一个支持定制化SQL、存储过程以及...
java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与...
《ProSpring——Spring专业开发指南》是一本深入探讨Spring框架的专业书籍,旨在帮助开发者全面理解和掌握Spring的核心概念、功能及最佳实践。通过阅读本书,你可以深入理解Spring如何为Java应用程序提供强大的依赖...
java毕业设计——基于spring boot的疫情数据查看网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的疫情数据查看网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的疫情数据查看...
java毕业设计——基于spring boot的就业信息管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的就业信息管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的就业信息管理...
java毕业设计——基于spring boot的旅游网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的旅游网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的旅游网站设计与实现(源码+...
java毕业设计——基于spring boot的在线选房网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线选房网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线选房网站设计与...
java毕业设计——基于spring boot的理财管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的理财管理网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的理财管理网站设计与...
java毕业设计——基于spring boot的在线招标网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线招标网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的在线招标网站设计与...
11. **Spring Cloud Data Flow数据流**:Data Flow用于构建、部署和管理复杂的数据处理流程,支持批处理和流处理任务。 12. **Spring Cloud Stream消息驱动**:Stream提供了一种声明式的方式处理消息,支持多种消息...
在本篇【原创】Mybatis学习笔记(一)——Spring集成Mybatis中,我们将探讨如何将流行的持久层框架Mybatis与Spring框架进行整合,以便在实际项目开发中实现灵活、高效的数据库操作。以下是对相关知识点的详细说明: ...
Spring是一个广泛使用的Java企业级应用开发框架,它以其依赖注入(DI)和面向切面编程(AOP)的核心特性而闻名。在Spring 2.5.6这个版本中,尽管很多主要功能已经被广泛介绍,但仍有若干隐藏的特性和技巧可能并未...
Spring注解驱动开发第41讲——Spring IOC容器创建源码解析(一)之BeanFactory的创建以及预准备工作(合起来整个过程)
**Spring MVC —— 第一个应用程序** Spring MVC 是 Spring 框架的一个模块,主要用于构建 Web 应用程序。它提供了一种模型-视图-控制器(MVC)架构,简化了开发过程,使得开发者可以专注于业务逻辑而不必过于关心...
java毕业设计——基于spring boot的桌面聊天室系统设计与实现(源码+数据库).zip java毕业设计——基于spring boot的桌面聊天室系统设计与实现(源码+数据库).zip java毕业设计——基于spring boot的桌面聊天室系统...
此为很有人气的Gossip的学习笔记,里面深入浅出的讲解了关于spring框架的知识与学习心得,是理解spring的不可多得的好资料。 此资料为html形式,每个知识点单独列为一张html页面,阅读很方便,不需要pdf格式下的阅读...
ssh 框架的基本搭建 , spring struts hibernate整合
在大部分涉及到数据库操作的项目里面,事务控制、事务处理都是一个无法回避的问题。Spring 框架提供了声明式事务处理机制,使得业务代码中进行事务控制操作起来非常简单。只需加个@Transactional 注解即可,大大简化...
该项目为基于Spring Cloud架构的Java微服务设计源码,名为spring-cloud-fast,包含121个文件,其中包含73个Java源文件、10个属性文件、9个PNG图片文件、6个XML配置文件、5个Markdown文件、4个Git忽略文件、3个JAR包...