论坛首页 入门技术论坛

这两天学了一下Spring,讨论一下它的好处

浏览 23961 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-01-08  
gdpglc 写道
我看Spring提供了两样东西:
1. IOC
2. AOP及Spring提供的一些辅助功能

这两样东西,有没有用我想做一下这样的对比应该能看出来:

不用Spring时,你强烈的感到需要IOC和AOP了吗?

打个比方:jdk如果没有文件的I/O库,这个影响是明显的。

可是程序不用Spring的影响是什么呢?

IOC使程序达到了彻底解藕,我的意思是调用者完全不知道调用的是谁。我想的确能带来解藕的效果,但是代价是产生很多接口和对应的配置。我看Spring代码,很不爽的是:想看一个被调方法的代码,用ctr+鼠标左键,找到的却是接口。

第一、
软件解藕,是软件设计的根本原则,在没有Spring的情况下,做好解藕靠的是设计人员的水平。有了Spring带了一个好处:即不用但心软件设计出现糟糕的情况,因为对于设计人员本身,在软件结构上,没什么好再设计的,什么都被Spring的规则决定好了。

因此,我感觉 因为Spring把软件的结构形式化了,从而约束了开发团队中的相关人员,因此软件的整体质量得到了提高。

这就象小时候的田字格本,在哪写字先规定好,然后再写。

第二、做到了IOC似乎,对做单元测试有很大好处,因为可以使用Mock的方式进行测试,但是真有哪个团队会写大量的Mock对象进行测试吗?

第三、想通过IOC来装配组件,形成有用的功能。应该是个理想化的想法。

AOP及Spring提供的一些辅助功能
就我知道的:
第一、声名式事务
第二、异常体系

都能起到降低程序员劳动强度的作用。需要一些配置。

这个好处恰好和Spring整体上带来的烦锁的接口定义和配置相抵了。


结论:
Spring会给软件带来好处,也带来坏处。总体上,好处>坏处。团队新手越多的话,好处越明显。
不用Spring一样可以写出优秀的软件。

但是,如果软件本身的结构,需要很大的灵活性,比如,软件不能用简单的分层结构划分,比如 Tomcat 这样的软件,似乎就没有必要用Spring了!Spring并不能给软件带来精巧、灵活、创新的设计,而是给常规形式的软件提供了明确的模板。


Spring和其它的框架如:struts、hibernate的目的是有明显的区别的。

Spring的目的是,提高软件的质量和开发效率(当然Spring也延伸到具体的功能领域了。比如:它也有MVC)

而struts、hibernate则是具体的功能框架,专注于特定的软件功能。


这上的实践不多,还望指正!

经过两天的讨论逐渐清楚了Spring的总体思想和技术的相关关系如下:

   组件编程思想
   /           \
ejb容器      Spring容器
                 /           \
     提供辅助性功能   以IOC技术实现组件装配
                                   \
                            基于IOC的AOP技术
                                       \
                               基于AOP的辅助性功能


最初我的关注点放在小处了,是有些肤浅。IOC应该是组件编程思想的具体技术形式,Spring的根本还是在组件编程思想上。

0 请登录后投票
   发表时间:2011-01-08  
怎么回贴,只是引了一下我发的内容?
0 请登录后投票
   发表时间:2011-01-08  
Tomcat 这样的软件,似乎就没有必要用Spring了?不解。那楼主认为什么中间件适宜使用spring?采不采用spring看项目和开发团队的选择,而不是中间件选择吧?。而且spring独立于中间件(不依赖中间件)。还有spring和ejb的应用环境不同的。spring虽然提供事务管理,但和ejb作比较这一想法还是不靠谱的。ejb应用在分布式应用环境中,依赖ejb容器,而且ejb支持分布式事务管理,如果按照java的三种事务管理jdbc,jta(支持分布式事务管理。jta依赖容器比如我们常说的数据连接池),容器管理(ejb)来说,spring不支持分布式事务管理。就我的理解spring的目的就是解耦,提供一个很好的面向切面编程接口。哦,我觉得凡是(java语言)应用程序服务器都可以使用spring,而web服务器像阿帕奇就不行。从bean的角度来区别ejb和spring的话,就是ejbbean和javabean的区别。呵呵,哥只是在某公司试用了一个月的菜鸟(刚毕业),大婶不要喷我啊。
0 请登录后投票
   发表时间:2011-01-08   最后修改:2011-01-08
tomcat不用Spring的原因是我自已的想法,可能有不馁之处:
因为Spring给程序规定了一个相对比较死的条条框框,这些是适合常规的企业及软件的,对这样的软件是有好处的,可以规范化这类软件的开发。

而对于Tomcat,Spring并没有直接的技术支持,因此Tomcat需要完全采用自已的设计,这就没必要引入Spring了。

你的这段话里,问题太多。
1.开发团队决定用不用Spring,那开发团队,根据什么决定的?
2.spring和ejb的问题,上网上找找资料吧,我也是外行,具我所知你说的不对。
3.spring也可以使用jta
4.Spring和ejb的目的是一样的。只是一个是轻量级实现,一个是重量级实现。
5.什么叫应用程序服务器?

0 请登录后投票
   发表时间:2011-01-08   最后修改:2011-01-08
唉!这贴有点鸡肋了。希望资深Spring的使用者,能发表一下看法。
0 请登录后投票
   发表时间:2011-01-08  
gdpglc 写道
唉!这贴有点鸡肋了。希望资深Spring的使用者,能发表一下看法。


你真幼稚,而且还不可教也,而且你的个性不变,你做一辈子软件也不会有什么出息,真的。你大势已去!
0 请登录后投票
   发表时间:2011-01-08  
技术贴,还是说技术吧。搞人身攻击很无聊!
0 请登录后投票
   发表时间:2011-01-08   最后修改:2011-01-08
gdpglc 写道
技术贴,还是说技术吧。搞人身攻击很无聊!


你总结的那个叫技术?你知道SPRING当初的初衷是什么么?
你读过RJ的那本《J2EE WITHOUT EJB》么?
你用SPRING当初解决的东西,拿到这个时代来再次看待SPRING给我们带来什么,你知道当今的情况跟那个时代的相差是多么大么?你根本就没弄明白IOC的真正含义。你的这种问题本来就不是技术问题,是哲学问题,你不知道科学一切归根到最后还是哲学么?你压根就不懂我们的意思,在这里鬼叫鬼叫。不可教也者,难成大器,你还是早些回家洗洗睡吧。
0 请登录后投票
   发表时间:2011-01-08   最后修改:2011-01-08
正在读大四的新手,还没达到什么高深的思想

但对于Spring的好处,我想,假如你在某个项目中没有用到它,就会想到到它存在的理由,当然,前提是你没有用其它技术替换spring

另外,希望大家能够以事论事,少搞人身攻击,毕竟有思想上的冲突是很正常的事情,如果每个人都被统一了思想,这种“和谐”才可怕!

想起一句话:我不同意你的意见,但我誓死捍卫你说话的权利
0 请登录后投票
   发表时间:2011-01-08  
kongruxi 写道
正在读大四的新手,还没达到什么高深的思想

但对于Spring的好处,我想,假如你在某个项目中没有用到它,就会想到到它存在的理由,当然,前提是你没有用其它技术替换spring

另外,希望大家能够以事论事,少搞人身攻击,毕竟有思想上的冲突是很正常的事情,如果每个人都被统一了思想,这种“和谐”才可怕!

想起一句话:我不同意你的意见,但我誓死捍卫你说话的权利


不好意思,我也大四,
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics