真不明白,为什么要用Spring Beans!

netsgo 2010-11-11 01:10:44
简单说,我认为Spring框架一直在强迫你使用Java的一个子集,确切说是框架的一个子集,并且一直以来偷偷地影响到支持它的框架。它含有创新和有限的选择。还有其他更多的东西。

但是不幸的是,因为时间有限,在这里我不可能把所有的道理都列出来。我宁愿给出几个例子来展示一下Spring的套路真的不适合我。当然你也可以告诉我说Sping能支持这个,或者说Spring从XX版本以后就开始支持了。这些我可不在乎。到现在为止,Spring已经存在了相当长的一段时间,而我的评判也是基于相当长的一段历史的。还有就是我所要讲的是框架的文化。

首先,如果你想要使用Spring Beans你就要相信它的神奇性。不同意么?

class MyServiceClass {
private IMyDao myDao;
// 其他东西从这里开始
}

类变量myDao的值没有任何构造体来对它进行初始化,并且它还是私有变量。可是如果你相信它的神奇性的话,你就能使用它了。知道为什么嘛?多找一找,就能在项目中发现在一个向导配置文件中已经注入了它。什么?

起先,这种解决方案了违背了Java的成员变量可视规则。但是忽略掉这些,也会在实际应用中或者养成一个习惯,那就是忽略一个从来没有初始化的类变量。恕我直言,如此一个提供并且鼓吹违反规则的框架一点都没有价值。

现在,可选择的解决方案就是给这个类变量写一个setter方法,然后再被Spring所使用,但是这样做什么也没有改变,要么你把它变成公有的(允许使用你的API的公共用户来设置你的DAO!),或者把它退回成从来没有初始化的私有变量,我有谈到终态(final)这个词么?:)

Spring声称它是没有这种强制性。什么?现在假设一下,把Spring从你的依赖关系列表里移出去,朋友,你的程序再也没有用了,并且你会突然发现到处都是空指针异常。可是谁又会注入私有类变量?或者是私有的setter方法?这种声明真是可笑。

现在,你是否发生过在配置文件中忘了声明或者书写错了你的beans?那又会发生什么呢?运行异常?什么?我曾认为Jave应用程序写地可是相当的准确。

现在我能听到你说,使用注释!注释解决了你的问题!我可不这么想。像@Required或者@AutoWired这样的注释就像在乞求用户不要删除这个类变量或者属性,并且还不是强制性的,也不被任何检查器所强制要求。记住,我这里是在谈文化...

现在,如果你是一个使用注入式构造体的拥护者,那么我相信你已经弄好了一些事情,并且很有可能你会拒绝我在上面所提到的那些漏洞(包括基于Setters方法注入,私有类变量注入,基于aspects范型注入(至少80%的是Spring Beans所提供的且就在实际中使用))。然后你把你的构架依赖性改成动态的,从来不检查,还把它的位置详细地写在疯狂的XML文件里!好好想想代码的导航性,软件流和依赖性,要使用这种方法,如果没有调试器的帮忙根本就无法追踪。

哦,用JavaConfig会怎么样呢?确实,我不需要Spring去做这些!“new”,你记得“new”这个关键字么?是的,面向对象编程,创建实例。这就是Java编程。相信我,“new”一下是没有害处的,再好好想想,你再也不用依赖任何框架来解决依赖性问题,而是用一种静态检查的,可导航的,可读的,简单的,明了的,优雅的,仔细的,安全的并且漂亮的方式。

最后就是,你需要学习Spring-FU,而不是专为Spring设计使用的任何框架,并且尽管这样你还有可能不会成功(因为框架设计者在定义构架的时候不得不受到Spring设计模式的影响,详例参见Restlet和Jersey)!这让我想到那些...

你真的不需要它哦!




转载原址:http://article.yeeyan.org/view/74655/33928
...全文
369 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
valenon 2013-06-17
  • 打赏
  • 举报
回复
出来个批判spring的,顶一下!
Helldance 2010-11-11
  • 打赏
  • 举报
回复
顶,ls说的有道理
好吃的松子 2010-11-11
  • 打赏
  • 举报
回复
其他不说,叙述方式让人抓狂!有牛人能翻译一下吗?
ousyuryu 2010-11-11
  • 打赏
  • 举报
回复
楼主是转载的啊~

程序是给人们提供方便的,并不是一个死板的,按套路来的东西。

Spring的创新就是他提倡的轻量级容器概念,这么多的项目用它做绝对不是因为赶风潮,而是Spring禁受住了考验。他最开始成功就成功于它的思想,为开发提供了便利。
整篇文章里都是,java是java,框架是框架,模式是模式的说法,一种形而上学的思想。
人们的需求才是最重要的~
sdyy321 2010-11-11
  • 打赏
  • 举报
回复
存在着的就有他存在的道理

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧