论坛首页 Java企业应用论坛

和一个朋友的聊天,他比较排斥Spring

浏览 48660 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-10-30  
stamen 写道


3)Spring使你更加方便地使用常用企业功能,如JavaMail,Timer,远程调用,缓存,安全等,Spring使得利用这些类库得到了很大的简化,而如果你直接用这些类库,学习曲线陡峭得很多;


Unknow---- says:
第三点是有价值了



有些人如果不被大象甚至恐龙折磨上十年八年的话,是绝对不会意识到马有多么的好驱策,多么的灵活

如果选择,他会说:马不错呀 吃的少

... ...



0 请登录后投票
   发表时间:2006-10-30  
引用
有些人如果不被大象甚至恐龙折磨上十年八年的话,是绝对不会意识到马有多么的好驱策,多么的灵活

如果选择,他会说:马不错呀 吃的少

这个比较经典  
虽然才刚开始学spring,但是还是真正感受到了它的精彩,继续学习中
0 请登录后投票
   发表时间:2006-10-30  
quaff 写道
ajoo 写道
偶是觉得spring的xml配置语法即使在2.0后仍然是很繁琐的。
spring的功能强大,继承了大量的第三方系统,还有acegi这类的私生子,这没得话说。理论上这是一个事实标准的胜利,是占据了先机的胜利,而不是技术上的胜利。

另外spring的灵活性也还有些疑问。

我们最近需要refactor一个遗留系统。该系统自己用property file定制了对象创建,并且在代码里面硬编码了“缺省实现类”。总而言之,是个long story。
在考虑重构这个系统的时候,没有发现spring提供温和的渐进改革方法。要用spring,似乎就不能再用现在这个property file了,也就是说,要一下子把所有用这个遗留框架的代码彻底改掉。

还有,spring也缺乏给容器外面创建的对象注射依赖的能力。


这些都是一些很细节的缺陷了。


最后说一点。凡是说用了spring就获得了ioc的好处的人,根本就没懂ioc。IoC,或者说Dependency Injection,根本不依赖于你是否用一个IoC容器。new MyBusinessObject(new SomeService())这就是一个IoC了。

1.spring的xml配置虽然繁琐了一些,但通过看xml的配置基本上就知道了整个系统的结构,对象与对象之间的关系,我基本上不用auto-wire.大家还是把spring的xml配置仅仅看作是配置,其实它也是编程,特别是spring2.0使用schema配置,还点更加明显.
2.你可以在一个ApplicationContextAware的bean里面实例化你property file里面的bean,然后注册到ApplicationContext,对外面对象的注射依赖请看
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory类里面的autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck)

1。xml还是做配置最合适。一旦用作编程,往往就非常蹩脚了。我倒是还比较愿意用autowire的。如果一概manual wire,那么还要spring干啥?groovy好不好?
spring 2的schema说实话我不太理解rod为什么要引入schema这么复杂的东西。自定义tag就得要schema?ant得自定义task也不需要schema。
2。我主要是不太希望java代码依赖这个properties文件。理想情况是xml config文件里面指向这个properties文件,java代码直接读xml config文件。
3。外面对象的注射么。autowireBeanProperties还算可用吧。要是它能允许选择要注射的property名字会更实用一点。
另外,容器内没有登记的类能做contructor注射么?类似:
autowireConstructor(AClassNotRegisteredInContainer.class)


还有,对这样一个场景:
容器内很多service组件的创建需要注射appId, sessionId两个变量。
appId, sessionId这两个变量会随着程序运行的上下文不同而不同。(比如,两个线程使用两个不同的sessionId)
怎么做?莫非每个线程都要先登记appId, sessionId?还要锁定整个容器?
0 请登录后投票
   发表时间:2006-10-30  
只看了开头,
但是连单元测试,敏捷开发的好处都怀疑的人,你跟他讲Spring,那不是对牛谈琴吗?
0 请登录后投票
   发表时间:2006-10-30  
人,技术人员,尤其是J2EE相关的技术人员,很需要主动的怀疑甚至否定自己,并且在外界和自己的观点之间寻找个好的平衡点。
技术人员很聪明,所以很自信,所以很喜欢钻牛角尖。
想说服别人,真难。
0 请登录后投票
   发表时间:2006-10-30  
总算看到一个相同想法的人unknown
0 请登录后投票
   发表时间:2006-10-30  
robbin说得很好,我觉得就应该那样说如果我遇到这样的人  
0 请登录后投票
   发表时间:2006-10-30  
ajoo 写道
quaff 写道
ajoo 写道
偶是觉得spring的xml配置语法即使在2.0后仍然是很繁琐的。
spring的功能强大,继承了大量的第三方系统,还有acegi这类的私生子,这没得话说。理论上这是一个事实标准的胜利,是占据了先机的胜利,而不是技术上的胜利。

另外spring的灵活性也还有些疑问。

我们最近需要refactor一个遗留系统。该系统自己用property file定制了对象创建,并且在代码里面硬编码了“缺省实现类”。总而言之,是个long story。
在考虑重构这个系统的时候,没有发现spring提供温和的渐进改革方法。要用spring,似乎就不能再用现在这个property file了,也就是说,要一下子把所有用这个遗留框架的代

码彻底改掉。

还有,spring也缺乏给容器外面创建的对象注射依赖的能力。


这些都是一些很细节的缺陷了。


最后说一点。凡是说用了spring就获得了ioc的好处的人,根本就没懂ioc。IoC,或者说Dependency Injection,根本不依赖于你是否用一个IoC容器。new MyBusinessObject(new

SomeService())这就是一个IoC了。

1.spring的xml配置虽然繁琐了一些,但通过看xml的配置基本上就知道了整个系统的结构,对象与对象之间的关系,我基本上不用auto-wire.大家还是把spring的xml配置仅仅看作是

配置,其实它也是编程,特别是spring2.0使用schema配置,还点更加明显.
2.你可以在一个ApplicationContextAware的bean里面实例化你property file里面的bean,然后注册到ApplicationContext,对外面对象的注射依赖请看
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory类里面的autowireBeanProperties(Object existingBean, int autowireMode, boolean

dependencyCheck)

1。xml还是做配置最合适。一旦用作编程,往往就非常蹩脚了。我倒是还比较愿意用autowire的。如果一概manual wire,那么还要spring干啥?groovy好不好?
spring 2的schema说实话我不太理解rod为什么要引入schema这么复杂的东西。自定义tag就得要schema?ant得自定义task也不需要schema。
2。我主要是不太希望java代码依赖这个properties文件。理想情况是xml config文件里面指向这个properties文件,java代码直接读xml config文件。
3。外面对象的注射么。autowireBeanProperties还算可用吧。要是它能允许选择要注射的property名字会更实用一点。
另外,容器内没有登记的类能做contructor注射么?类似:
autowireConstructor(AClassNotRegisteredInContainer.class)


还有,对这样一个场景:
容器内很多service组件的创建需要注射appId, sessionId两个变量。
appId, sessionId这两个变量会随着程序运行的上下文不同而不同。(比如,两个线程使用两个不同的sessionId)
怎么做?莫非每个线程都要先登记appId, sessionId?还要锁定整个容器?


1.这是见仁见智的问题,你用autowire是为了节约配置代码,我不用autowire是为了看清楚bean之间的依赖关系,各有优缺点,反正spring都支持怎么选择还是靠开发者自己,即使是必

须manual wire我也会选择spring也不选groovy
如果acegi的配置全部配成autowire,那要弄清楚acegi的机制只有一个一个找java源文件去看
spring 2.0引入schema只是途径不是目的,这个东西反正是面向框架开发者的,开发复杂丢给框架开发者去搞,一般的spring用户没必要去管它,只要用它来简化配置就可以了
我觉得acegi很适合做成自定义tag的配置

2.总之你得写代码去解析这个properties文件,不是用java代码难道用ruby?你的java代码不依赖这个properties文件是不可能的,可能你希望spring已经写好这样的代码,你稍微配

置一下就可以用,但是你想想spring怎么可能知道你的properties的结构和意义?spring不是神,不要希望什么事情它已经给你做好了

3.你要这样的功能你自己去写一个这样的实现就行了,做好了提交给spring team.spring本来就推荐用属性去注入而不是用构造参数去注入
autowireConstructor(AClassNotRegisteredInContainer.class),这个我不知道你的yan能不能做到这么智能化,如果你的类有多个构造方法,spring怎么知道你要调用的那个构造方

法.
0 请登录后投票
   发表时间:2006-10-30  
竟然看完了。你朋友很多基本的spring和acegi的概念都没有搞清。真是不明白为什么可以对自己不了解的东西妄下断言呢?
0 请登录后投票
   发表时间:2006-10-30  
dada 写道
竟然看完了。你朋友很多基本的spring和acegi的概念都没有搞清。真是不明白为什么可以对自己不了解的东西妄下断言呢?


何谓很多基本的spring和acegi的概念?spring,acegi只是为你做了N多的事情,留给你的只是一定量的配置,若干的代码量而已。有什么新东西吗?甚至可以说和ajax的产生没什么区别,唯一的好处就是其体现出来的设计思想,可有一些也是借鉴而已。

不是所有的项目都“体大如牛”的,从实用角度考虑,什么方便用什么,现在可用的东西那么多,需要什么我拿来用就是了,只要能简单,正确地表达出我某一个交易要做什么,不能做什么,与其他交易或其他系统中的业务是否发生关联,如何通讯就可以了。
重构只是一个美好的愿望,全中国有那么多的业务系统,大多数都是一个版本一个版本迭代出来的产物,你觉得上一个版本有bad smell,代码冗余,耦合极强,难道你就去重新构造这个业务系统?等你重新构造后,它的市场价值也没了,投产还有何意义?你所做的一切还有何意义?所以我觉得重构对提高个人代码素养有很大的好处,对实际的业务系统意义不大。

再来说说XP,所谓的“结对编程”,国外不晓得乍应用的,对于国内,乍应用,一个开发,一个辅助,两人轮换,可对于开发,每人都有自己的一套小九九,对于不同的需求,每人都有不同的理解,估计要两人能达到一致,恐怕就得耗费一段时间了,在开发过程中也难免不会出现意见的分歧,这样情况如何解决?老外是怎样解决的?也许你会说,每人做一个交易,一个流程,这样就不“打架”了,貌似可行,可前提是这两人得“对眼”,要么能力接近,要么关系不错,否则如何解决两人的合作关系?除非是一男一女合作。。。。。。

随便说说,欢迎讨论。。。。。另外回贴的时候,不知为何cpu占用过高,风扇时不时地在转,我用的maxthon,没开其它东西,噢,对了,开空调来的:)怀疑是文本编辑器有资源占用问题,呵呵。
0 请登录后投票
论坛首页 Java企业应用版

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