锁定老帖子 主题:Spring--也许正成为一个EJB
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-14
最后修改:2011-04-16
最后算是总结一下吧(包括我自己一开始要表达的内容,以及中间想到的一些内容):
以下是原来的内容: 引用 本来想注册一个马甲来写这个帖子的,因为估计自己会被骂得很惨。
但是想想还是认了吧。 说个额外的话,大家如果分别看一下支持和反对者说话的语气,就会觉得蛮好玩的。 我不善于写长文章,就简单的说一下自己的看法吧:
当然有人说,是很多人没有用来Spring,事实上,EJB也是这样,不是EJB不好,而是EJB没有被用好。 就好象API的设计,如果你设计了一个API,却很容易让人误用(或者是进行了错误的宣传),那么责任是使用者还是开发者呢? 大概在7年前,我就不太认同Spring,当然Spring不会因为我的不认同而停止,7年后,情况似乎更严重了。 当时我在CSDN上写的一个Blog: http://blog.csdn.net/wl_95421 我现在仍然想问一个问题:配置文件真的比代码更容易维护吗? 另外说一句,我反对Spring的思路,但是也会用到Spring的一些功能包,比如Jndi的封装等。 估计很多人不同意我的意见,不过希望大家静心讨论一下。 另外说一句,“面向接口编程”,这话里的接口不是java的interface,如果真正翻译一下,应该是“面向抽象编程”,也就是说,将功能抽象出来,然后通过对外的内容提供功能,至于对外的内容是interface,还是class,要看具体的情况。 不是说我写了一个接口,再写一个实现类,就变成“面向接口编程”。 所以也提醒大家注意,回头看一下自己的代码,是否真地对自己的功能进行抽象了,如果说从interface中看出了非常具体的功能,那么这个interface其实就没有什么意义。 我来回答一下问题吧: 引用 Spring完全没有强制你如何写代码
是否强制,这个很难说。仍然是那个建议,java.util.ServiceLoader和Spring两种注入方式,哪种更容易误用呢?一个框架多少都会对使用者施加一定的影响,说没有强制是不大可能的。 问题不在于强制于否,而是在接受的同时,要有自己的思考。 比如说,这种问题Spring有一种解决方式,那么有没有别的方式,思考之后,觉得没有,OK,继续用Spring,如果有,尝试用一下别的内容,也学到了东西,有什么不好呢?但现在这种情况不太普遍吧。 引用 也没看出来你有啥有建设性的建议
我提一个建议,不一定说好,供参考。 将一个大项目分成多个模块项目,模块项目间不使用Spring组装,每个模块都自己清楚的对外功能入口。然后模块内部的Spring文件对外屏蔽,不要外部修改。这样外部使用一个模块的时候,无须去了解Spring文件,而且每个模块内部使用一个相应的ApplicationContext,不会项目所有的模块共享一个Context,可以适当地减少混乱。 当然Spring-DM也有这部分思想的体现,只不过它当时更多是为OSGi来做。 又说到老的话题,Spring也有很多好东西,但好东西往往没有被用好,反而是被用烂了。 引用 如果without spring,你有更好的方案吗?没有,那就接着用吧。
引用 难道兄弟你有更高明的方案?如果没有,请不要乱说!
这句话其实没有意义,每个技术都有适用的场景,有些场景下用Spring也是合适的,但是我看到的情况都是在滥用。为一个功能写一个接口和一个实现类,然后就认为是面向接口编程。这种思路怎么来的,真正用的好吗?我是比较怀疑的。 如果说到方案,只能具体化,打个比方,JDK的ServiceLocator也是非常强大,同时也很简单的。用他同样可以解决很多问题,NetBeans的Lookup也很简单,同样支持了NetBeans。 引用 多么令人蛋疼的观点,发言要靠事实依据,你有证据证明ejb是因为没有被用好才淘汰的吗
EJB一开始就主要目的是为了分布式功能来做的,在当时是没有什么问题的。但在当时有多少项目需要用到EJB呢,很少,但大家提到分布式,就觉得是EJB,本来就是误用。那时候,几乎是言必谈EJB和分布式。 EJB没有被完全淘汰,有很多场合还是用得不错,这些例子我就不用举了吧,只不过90%的情况下是被误用的。 引用 我没投新手,也没投隐藏。但我是为spring叫好的人。你怎么就那么确定为spring叫好的就一定是新手?你怎么就知道人家没有对历史比较?
我不知道为什么说Spring不好,就有人说我水平差,我是混过来的,没有经验装经验,有逻辑关系吗? 就算上面是真的,我一定是年轻人吗?无语的逻辑。 引用 真的不知道你是怎么混过来的。估计也是没什么经验的装有经验吧,我真的很气愤你们这些人,本来没经验就不要装。好像自己其实什么都懂的样子。年轻人不要太浮躁。
我对这话也比较无语了,我虽然不是什么大牛,但代码方面应该也不算太差了。 另外我33岁,不算年轻人了。 引用 个人看JSP真的应该要淘汰了,JSF才是下一个J2EE的领主。让J2EE开发变的更加快捷和高效
至于JSF,我不是特别了解,不好评价。但我也不认为它会是下一个J2EE的领主。 引用 小弟经验不高。但是我想说。天底下没有完美的程序,是程序就有BUG。所以至于任何框架都有 有点,缺点,没有什么淘汰之类的说法。
问题是目前看过来,Spring基本是被滥用,书上给出的例子都往往比较教条,大家照抄,结果不用说了。 当然淘汰这个词用得不是很合适吧,每种技术都有场景,就象cobol多年来还是在用。 引用 占位,我觉得spring挺好的,能解决掉我们开发中的很多问题,减化我们的工作量。我们只用它的core部分就行了,其它你可以不用。如果without spring,你有更好的方案吗?没有,那就接着用吧。
我没有说用还是不用Spring的问题,我只是说Spring现在被严重误用,快成了第二个EJB了。 引用 没办法火了 这种人太恶心了,贬低别人抬高自己,不懂技术非要装懂。如果他真有本事 你就别用Spring
评价一个东西的好坏,和用不用这个东西没有必然联系吧。 我一直在强调误用才是最根本的问题,不是说用不用的问题。 引用 乍一看标题,正想一笑了之,忍不住好奇点开帖子,盼着或有什么惊人之论,也未可知。进来看后大失所望。不是说spring不能被批评,只是楼主通篇除了无病呻吟,实在毫无深度,乏善可陈。不过倒是符合JE评良好无好贴的一贯作风。
无病呻吟不敢苟同,我已经在里面提出了问题,Spring的误用,带来了不必要的复杂度,而且目前很多项目中的设计就是为了接口而接口,我觉得这种情况很严重,而且很多人把IOC等同于Spring的注入,事实上还有很多更好的注入方式,如ServiceLocator(Tuscany基于它实现的,应该不算小项目了吧),NetBeans的Lookup也不用说了。 至于很多人说让我给出一个更好的方案,我的确是没有办法。小项目有小项目的做法,大的有大的,产品型的和普通项目也有区别,怎么可能有一个放之四海而皆准的方案。但现在很多人都认为Spring就是,这才是我想说明的问题。 说实话,我也没有想过去说服别人,只不过正好和一个朋友聊天说到Spring,所以发了这个帖子。 不过结果倒是在我的意料之中。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-14
最后修改:2011-04-14
不错,把神仙斗倒,把大鬼小鬼放出来
还有那个神马Action -> Service -> DAO 架构是哪位专家设计的?我不是说不好,关键是怎么不说一下什么情况用,什么情况能用呢?这种"架构"明显存在和Refactoring一书相冲突的Smelly Code ----------------------------------------update(这个沙发抢得真好),这是我以前的一个回复,正好表达我的观点: 引用 当Rod提出J2EE without EJB的时候,事实上就已经给J2EE without spring做好了铺垫。因为他还是无法逃离J2EE的魔爪。
J2EE是什么?他是一个平台,一套规范,用来解决“复杂”的企业应用问题,它的最终体现就是App Server。对象是什么?企业应用开发人员。 想做一个又大又全又简单易用的东西,自然有人会说,我为什么要为不需要的功能买单?我想更换其中的某一部分怎么办? 让我们总结一下抽象的层次: 核心库抽象了系统调用 框架和中间件平台抽象了基础API使用模式 各种所谓应用开发平台抽象了开发模式和业务场景模式 每一层抽象,都有规范限制,都加大了约束,最后程序员的能力和活动范围越来越小。而且对于应用开发来说: 1 做同样的事情,不管需不需要,永远要背起容器这个包袱; 2 很多事情只能绕着圈子来做。 对于真的关心解耦,Ioc的人,google-guice也许是更好的选择。 |
|
返回顶楼 | |
发表时间:2011-04-14
说白了,大多数人还是冲着声明式事务去的.
不过现在, 轻量级声明式事务管理,已经不止Spring了 |
|
返回顶楼 | |
发表时间:2011-04-14
spring也不可能全是好的,你可以在所有的时间内解决一个问题,也可以在一定的时间内解决所有的问题,但是不可能在所有的时间解决所有的问题。
另外ejb是好,但是不好用,市场已经说明了,要不然sun也不能黄了。 |
|
返回顶楼 | |
发表时间:2011-04-14
EJB和Spring我都没理解其意义,只是觉得这2个东西用起来都很麻烦,尤其是配置,EJB部署麻烦,Spring的xml配置很麻烦,要用的时候总是要拿一本书一边看一边配置。。。。
|
|
返回顶楼 | |
发表时间:2011-04-14
spring是饺子皮,ejb是个包子,怎么成为呢
|
|
返回顶楼 | |
发表时间:2011-04-14
ppgunjack 写道 spring是饺子皮,ejb是个包子,怎么成为呢 这个很有意思, spring 不光是饺子皮,现在也在做 混沌皮,豆腐皮。。。 |
|
返回顶楼 | |
发表时间:2011-04-14
占位,我觉得spring挺好的,能解决掉我们开发中的很多问题,减化我们的工作量。我们只用它的core部分就行了,其它你可以不用。如果without spring,你有更好的方案吗?没有,那就接着用吧。
|
|
返回顶楼 | |
发表时间:2011-04-14
难道兄弟你有更高明的方案?如果没有,请不要乱说!
|
|
返回顶楼 | |
发表时间:2011-04-14
引用 事实上,EJB也是这样,不是EJB不好,而是EJB没有被用好。 多么令人蛋疼的观点,发言要靠事实依据,你有证据证明ejb是因为没有被用好才淘汰的吗 你了解ejb,换句话说,你真正用ejb做个多少个项目!!!!!! 如果没有,就别瞎扯误导新人了....................... 话说je越来越多这么无病呻咛的帖子,真看不出意义何在. |
|
返回顶楼 | |