锁定老帖子 主题:Spring--也许正成为一个EJB
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-14
http://www.iteye.com/problems/62911
觉得spring那么NB的话,帮忙回答下这个问题 |
|
返回顶楼 | |
发表时间:2011-04-14
最后修改:2011-04-14
linvar 写道 ricoyu 写道 引用 但是我看到的情况都是在滥用。为一个功能写一个接口和一个实现类,然后就认为是面向接口编程。这种思路怎么来的,真正用的好吗?我是比较怀疑的。
LZ这段话我超级赞同的, 很多项目都是为了面向接口编程而面向接口编程, 庸人自扰之. 比如很多项目喜欢弄一个service接口, 然后对应一个serviceImpl实现类, 在action里持有这个service接口, 然后通过spring注入唯一的一个实现类serviceImpl, 这就是他们所谓的面向接口编程了. 在这种场景下完全不需要抽象出一个接口, 直接一个service具体类就ok了 开始的时候我也这样认为,后来在一个项目中果断去掉接口, 直接一个service具体类, 但是再后来才发现自己错了,接口的编程模式不是凭空而来的,是最佳实践... 特别是在项目大一点的时候, 另外我使用spring也是因为要取他的事务管理, 后来尝试struct2, springmvc, 最后选择springmvc. spring基本上是使用注释, 只有一个主配置文件,主要是配置数据源,事务管理. 基本就是使用springmvc + spring + mybatis组合, 不知道你的大项目是多大, 我做过的一个项目开发+测试+报表人员, 最多的时候达到上百个, 做了三年才上线, 所谓的service层根本就不抽象出接口来, service层是干嘛的?是"你"实现业务逻辑的地方, 而不是给团队里其他人用的, 分层干嘛?吃饱了撑的给自己找不痛快? 模块间需要调用对方的API, 那么需要提供一个interface给对方用, 自己提供一个实现类做具体的事, 这样最大限度地避免了模块间的耦合. |
|
返回顶楼 | |
发表时间:2011-04-14
楼主说得有一定道理,我参与的好几个项目,也是用到Spring的依赖注入,写个DAO、写个Service,无处不注入,增加了工作量,而且包结构一动还得手动改配置文件,还因此让人对代码重构产生了一定抵触。但是同时,Spring依赖注入的优势却从未体现出来,不是优势不存在,而是大部分项目根本不需要,于是Spring自然是英雄无用武之地,久而久之,Spring反而成了负担
|
|
返回顶楼 | |
发表时间:2011-04-14
很多年前我就只用service容器这块功能了,mvc是自己写的。spring+struts架构中配置最多的地方其实就是mvc了,虽然也有插件支持0配置,但是满足不了我的需求。另外,struts的action不能严格区分输入输出,同一个方法的输入输出不能区分,同一个action中不同方法的输入输出也不能区分,在维护项目的时候感觉代码可读性太差了。
|
|
返回顶楼 | |
发表时间:2011-04-14
08年的时候做过jsf+spring+hibernate
那时候只是觉得jsf的事件驱动不错,其他到没觉得有什么。 如果要是为了事件驱动而来还不如转去做dotnet呢 |
|
返回顶楼 | |
发表时间:2011-04-14
我没有用过EJB与Spring,但怀疑使人进步,不是吗?
如果没有怀疑,那么地球还是宇宙的中心,或者太阳是宇宙的中心…… 对那些个人崇拜者,权当他还没有自言主分辨的能力。 任何事情,都是人们不断的推翻、质疑现有的结论,从而不断进步。 |
|
返回顶楼 | |
发表时间:2011-04-14
引用 EJB一开始就主要目的是为了分布式功能来做的,在当时是没有什么问题的。但在当时有多少项目需要用到EJB呢,很少,但大家提到分布式,就觉得是EJB,本来就是误用。那时候,几乎是言必谈EJB和分布式。
EJB没有被完全淘汰,有很多场合还是用得不错,这些例子我就不用举了吧,只不过90%的情况下是被误用的。 你又出来偷换概念了 EJB是为了分布式功能设计的 当时没有多少项目是分布式的 + 误用 -------------------------------------- 得出EJB之所以被慢慢淘汰是因为EJB被误用的结论 注意这里说的EJB是2.0 看来你不但知识匮乏而且逻辑不通 EJB之所以很快被Spring 替代是因为分布式应用少,而非分布式误用EJB就说EJB不要进而被淘汰吗,有一个蛋疼的结论啊...... 分布式的框架也不少,EJB只是其中之一而已,因为 "分布式框架少" 大家误用就误解了EJB 事实是即使分布式应用多了,依然没有提起古老的EJB2.0 那是因为EJB本身技术设计上的拙劣 Spring 开始的噱头就是 without EJB , 如果是jod[名字记不太清了] 一个人一厢情愿的想法,怎么很快被后来的人使用 解耦,易测试,容器无关,事务集成等等,这些优点都是EJB的死穴 EJB2的对象总是重重加码, 可笑还有人说接口 ,EJB不用接口吗,EJB使用的接口比Spring 多多了 一个乱碰的帖子竟然还这么多人乱喷,真是悲哀............. 一句话总结,SSh之所以这么流行是市场的选择,并非喷子们想象人为操纵,喷子们学不好EJB,想不通Spring才是你们悲 哀的根源....................... |
|
返回顶楼 | |
发表时间:2011-04-14
其实我觉得大家没必要那么激烈啊,呵呵,任何框架、规范都有适用的场景。就比如EJB实际上是解决分布式方案的一个标准,当然各个公司,尤其是小公司遇到分布式项目的时候宁愿只是用Web Service或者JMS,也避开EJB。因为维护支持EJB标准的服务器代价比较高昂。而没有涉及到分布式、集群项目的,当然就可以仁者见仁、智者见智了。因为Spring是一个模块引用比较优雅的框架,加上他还提供了很好的模板类,那么几乎开发人员,哪怕是没什么经验的突击1~2天也能上手coding。而且不必关心对象的滥用,创建问题。因为引用所有的对象都是由Spring这个看似容器似的东西为你主动注入的。资源上可以放心,而且线程安全问题也不用开发人员操心。这些Spring都为你屏蔽了。相对于一般的应用,实际上如果开发团队还不够开发核心类库、框架的程度,那么使用这些开源框架是一个比较实在的方案,节省成本不说、开发效率确实比不用这些框架快了不少。
呵呵~~~目前好像还没有哪个开源的框架能取代Spring这种容器框架吧,所以他确实有他强生命力的理由。 大家可以放松的以一个局外人讨论这个问题,不用言语那么激烈的,非得面红耳赤的。大家都是为了混碗饭吃。呵呵 |
|
返回顶楼 | |
发表时间:2011-04-14
kjj 写道 引用 EJB一开始就主要目的是为了分布式功能来做的,在当时是没有什么问题的。但在当时有多少项目需要用到EJB呢,很少,但大家提到分布式,就觉得是EJB,本来就是误用。那时候,几乎是言必谈EJB和分布式。
EJB没有被完全淘汰,有很多场合还是用得不错,这些例子我就不用举了吧,只不过90%的情况下是被误用的。 你又出来偷换概念了 EJB是为了分布式功能设计的 当时没有多少项目是分布式的 + 误用 -------------------------------------- 得出EJB之所以被慢慢淘汰是因为EJB被误用的结论 注意这里说的EJB是2.0 看来你不但知识匮乏而且逻辑不通 EJB之所以很快被Spring 替代是因为分布式应用少,而非分布式误用EJB就说EJB不要进而被淘汰吗,有一个蛋疼的结论啊...... 分布式的框架也不少,EJB只是其中之一而已,因为 "分布式框架少" 大家误用就误解了EJB 事实是即使分布式应用多了,依然没有提起古老的EJB2.0 那是因为EJB本身技术设计上的拙劣 Spring 开始的噱头就是 without EJB , 如果是jod[名字记不太清了] 一个人一厢情愿的想法,怎么很快被后来的人使用 解耦,易测试,容器无关,事务集成等等,这些优点都是EJB的死穴 EJB2的对象总是重重加码, 可笑还有人说接口 ,EJB不用接口吗,EJB使用的接口比Spring 多多了 一个乱碰的帖子竟然还这么多人乱喷,真是悲哀............. 一句话总结,SSh之所以这么流行是市场的选择,并非喷子们想象人为操纵,喷子们学不好EJB,想不通Spring才是你们悲 哀的根源....................... 我来回答一下你的问题吧,不一定正确,仅供参考: 1、解耦并不是Spring的长处,你可以看一下http://weblogs.java.net/blog/timboudreau/archive/2008/08/simple_dependen.html 我认为这种方式比Spring要好(个人观点。) 2、EJB仍然有自己的用途,我说淘汰可能是不太合适。EJB本身设计上也是存在一些问题,这个不否认,但是最大的问题仍然是误用,7年前,有多少人谈到web、事务就是EJB,不管场合用某项技术,我坚持认为这就是误用,我说Spring正在成为EJB,是指它也被严重地误用,误用程度还超过了EJB。 至于Spring好不好,我个人坚持认为,它有自己的长处,但是目前普遍被误用。 http://itspice.net/cms/enterprise-java/disadvantages-or-cons-or-i-hate-about-of-spring-framework |
|
返回顶楼 | |
发表时间:2011-04-14
LZ 还是被喷了,上面说LZ新手或者谩骂的人 那才是真正的不懂动脑筋的人
个人理解Spring的价值不在IOC上,现在Spring的IOC配置起来的确是滥用了,一个项目下来配置文件都有好几个。面向接口编程成就了Spring,但是Spring却误导了面向接口编程。 但是,恰恰Spring的其他功能都是基于IOC的,这样使得我们不得不用Spring的IOC来解决问题。 Spring精华就是Proxy。 |
|
返回顶楼 | |