我们的开发一直都用spring,但也主要是用它进行bean管理,其实自己写个bean工厂工具类也很简单。IOC用了一点,但不用也没关系,因为接口与实现是一对一的,根本不需要注入,直接在程序中引用实现类可以省下配置XML一步,程序很少会调整,就算调整也是改改重新编译某个文件即可,从没有那种通过配置替换实现类的需求。AOP也没用,比如日志(log4j本身就足够强了,没必要画蛇添足)、缓存等,仍然要根据需要调用工具类实现,涉及到传递不同的参数,用AOP通过方法名查找太死不够灵活,而且业务是否需要某种系统服务我们是做在配置中的(配置保存在数据库中,有配置界面,用户可以修改),根据这个配置来实现,能够实现实时的更改,用AOP则需要改XML配置后重启应用。
这两个最重要的功能都没什么用,那些辅助的如WEB框架、DOA什么的就更用不到了,仅是一个bean工厂似乎没必要用这么大一个jar包,我认为spring是最名不副实的框架了,想不明白为什么spring名气这么大,谁能给解释一下?

解决方案 »

  1.   

    工欲善其事,必先利其器.不知道你对spring的事务管理了解多少????????????????????
      

  2.   

    规模很大,与facebook有点像,一组核心程序作为容器,其它功能都是运行其上的应用模块,即构件,构件在不断扩展中。构件的粒度较小,比如OA功能,可能有几十个构件组成,一个构件只解决一个业务问题。
      

  3.   

    spring 比 ejb好太多了吧所以流行啊 
      

  4.   

    是啊,我没有谈到事务,事务毕竟还是调数据库提供的ROLLBACK,自己写个工具类也行吧,或者用Hibernate或ibatis提供的事务机制,当然spring也是一种选择,但如果spring用不了多少东西,我觉得就没必要引入这个包了
      

  5.   

    听你这么说,感觉用spring就对了,spring本身不是为了开发方便,是为了以后方便
      

  6.   

    大规模的用spring好,小的一般用struts
      

  7.   

    如果你觉得他用处不大,你可以不去用他,不用spring的项目很多,成功的例子也很多,只是人家有自己的封装,可能比spring封装更好的IOC,AOP
      

  8.   

    可我们的项目很大啊,也没看出来用spring好在了哪里?
      

  9.   

    现在做的这个项目中,也用到了spring,不过主要是用到事务管理,以及Bean的管理,感觉Spring主要是用于对框架的整合!
      

  10.   

    我用的话估计与11楼情况差不多,只用事务管理和bean管理,不过我习惯于让应用中只有有用的代码,保持干净简洁,如果只用这两个,是否应该去找专门解决事务管理和bean管理的组件呢?弄进一个庞大的spring包感觉没必要啊
      

  11.   

    spring 的包很庞大吗? 不会吧spring在国内大多公司都用于整合和去管理struts1.x线程,因为struts1.x自己的管理线程的机制不完善。而spring还有一个更为强大的就是他自己的mvc,但是国内直接用spring开发表现层的不多,用的精通的人才也不好招这是一个过度的过程。要真正的去理解spring不是看你的工程有没有用,而是要看你的工程用spring的那一块? 为什么要去用他。你感觉没用的东西往往都是最容易疏忽的东西。
      

  12.   

    其实框架只是方便自己使用而已,Spring框架也值是属于轻量级的JAVA EE 开发。一个项目成功与否还是取决于人的素质,很多项目即使使用了JAVA 三大框架也未必成功,很多项目没有使用Spring也成功了。套用葵花宝典的一句话叫 :“ 欲练此功,必先自宫。就算自宫,未必成功!”。
      

  13.   

    假如让我做一个卖花的系统 我肯定不用spring
      

  14.   

    首先我不认为spring是一个“庞大”的东西。。其次既然你认为什么东西都可以自己来写(事实也的确如此),那么你可以在你的项目里把所有柜架都去掉,一切东西都自己来写,这样改完之后,你再来这里发贴谈一下你的感受!!
      

  15.   

    呵呵,可能是你只知道那么多吧,Spring 我用的东西也不多,但我知道它有多强大,不知道就不要说出来,你看,这不被别人知道你的无知了吧。
      

  16.   

    问这个问题就是想知道到底为什么应该用spring,因为我的实践是我只能用到一丁点功能,并非不可替代,所以想了解一下大家是怎么用的
      

  17.   

    我们公司的项目也不大,我就用到简单的JdbcTemplate相关的一些功能
      

  18.   

    spring 方便啊  还是轻量级的。
    用了都说好。
    谁用谁知道。
      

  19.   

    归根结底是EJB太烂,要是EJB刚开始发展就像现在的3.0版本,那Spring是不会诞生的。
      

  20.   

    我也想看一下大项目是如何用Spring的
    期待高手说具体一点
      

  21.   

    其实JAVA发展到现在,每个功能可以替代的东西很多,你们只是没有使用spring的全部替代而已,大家喜欢它,一个主要的原因是你要的功能它基本都封装实现了,喜欢里面什么功能就用什么功能,并且它也不是强制性,使用门槛也比较低。所以是用的人多,但不是全部都用它替代。
    所以我喜欢他,确实什么东西就向spring要。
      

  22.   

      spring 还没学到 我现在还在啃JAVA基础
      

  23.   

    用不用是自己的事,而开发不开发spring那是人家的事了,
    没必要对着干!自己觉得不适合就放弃好了。
      

  24.   

    我来看看,个人觉得spring中的思想是最有用的,而且个人觉得在特定的系统中 这个也是可以没有的,因为特定系统的变化,一般来说,还是较小的,那么在做开发服务这方面来说,别人的要求变化就大的去了,spring的好处就体现出来了,重用,修改,是结构性的变化,多样的需求
      

  25.   

    其实JAVA发展到现在,每个功能可以替代的东西很多,你们只是没有使用spring的全部替代而已,大家喜欢它,一个主要的原因是你要的功能它基本都封装实现了,喜欢里面什么功能就用什么功能,并且它也不是强制性,使用门槛也比较低。所以是用的人多,但不是全部都用它替代。 
    所以我喜欢他,确实什么东西就向spring要。
    理解! 
     
      

  26.   

    spring可以真的可以替代EJB吗?
      

  27.   

    spring 我了解不深啊,学习中。
      

  28.   

    我理解spring就是ejb的本地版本,比ejb容易使用,只不过不能像ejb一样调用远程对象
      

  29.   


    用类 org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter和org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean可以实现远程调用
      

  30.   

        Spring看如何使用, 我非常喜欢其AOP, 把一些通用的操作独立出来,不包含在业务代码里面。 如果单单只是用来进行bean的管理,就会觉得们必要,象楼主所说的接口和实现是一一对应,要何必用xml配置来注入,好像很麻烦。
        
         但是,使用spring管理bean,让类与类之间关系变得耦合少了,开发不一定方便,但是对系统以后的修改,代码的重用有很大的方便行。     使用spring来带来很大的技术风险,项目组团队要求对spring里面,使用了解必须到达一定的程度,不然都会抵制,我在我项目进行spring改造时,全部开发人员都抵制,原因就是:没必要使用xml管理bean,麻烦,没必要,接口实现一一对应,实现类修改也是重新编译类,不会修改xml等等。。
         
      

  31.   

    等你用了Spring以后就会发现省略很多很多的代码,比如事务管理,只需要一个简单的标签就解决了,不需要那么多的try了
      

  32.   

    spring实现了很多我们能用到一部分就不错呵呵~
      

  33.   

    spring把多种技术封装起来,简单集成,使用起来方便
      

  34.   

    报歉,有几天没过来,大家说了这么多了。
    综合大家的发言来讲,spring主要是用bean管理和事务,其它只是根据需要,用起来方便而已。其实我也是只用bean管理和事务。
    但是我想,是否有更轻量级的工具,只解决这两个问题?感觉bean管理一个工具类即可实现(我的感觉,请教高手对不对?),事务的话,似乎一个工具类也可以实现(是不是这样?没深入研究,感觉只是调数据库提供的ROLLBACK,应该不难实现吧),请高手解答。如果这样的话,实现这个功能只需要十几K或几十K一个小包或者几个类文件就够了,不用在产品中放spring这个600多K的大包了。
      

  35.   

    为什么不想用spring呢?还有一个原因是我的框架与spring功能有重叠。如果某些参数不想在代码中写死,就得使用注入,这些参数可能是动态的,用户可以维护的,用spring的话是写死在配置文件中的动态性是没有的,而我的应用中,这些是存放在数据库中的。在实践中我发现,接口与实现的装配,基本上没出现过这种需求(这是spring宣传的使用情境),但动态参数却使用非常广泛。我把一个功能(或者说一个bean)是否缓存、对应的view、是否记录日志、使用的皮肤等参数都存在数据库中了,这样通过配置界面即可调整,写在spring的配置文件中则需要重启(应该可以改成不重启的方式),对应的view其实就是自己的MVC框架了。对比AOP以方面方式提供服务(对方法有很多查找方式,但主要是根据规则的方法名的,但很多情况下,用户需要根据自己的选择决定是否使用某种系统服务,而不是按照某种规则统一采用),我的方法是把系统服务列表提供给用户选择,某一个bean或功能点是否用某种服务,我也曾想过修改扩展spring来实现,即使用XML而不是数据库方式存放配置信息,看起来spring的XML解析速度很快,比访问数据库似乎性能更好一些,另一方面这种方式能够不依赖于数据库(让数据库中是业务数据,而不是应用配置信息),可移值性好一些(连同应用一起拷贝即可)。但是这种方式也有很大缺陷,一是操作XML不如操作数据库存取来得方便,似乎占用内存较多,,二是XML失去了数据库外键关联等特性,查询及关联查询很难实现。所以正犹豫不决,希望大家讨论。先不结帖,追加分数
      

  36.   

    Spring Struts Hibernate Ajax 
    ……等这些J2EE开发技术,看你的项目实际需求了,该用的就加上!
    毕竟一个个流行的框架的诞生都是有其自身优势的!
    我们在开发时的一些应用我想并不会把某个框架的所有组件都用上吧?
    所以这就跟我们人是一样的,我们要善于发现优点!
    既然Java世界里我们有这么多的开源框架供我们开发使用……很庆幸啦!
      

  37.   

    说实话,不管是什么大不大,比如你用java ,我不知道现在有好多人用到了好多java的内容,
    java包含了这么多,各个领域,各个不同的需求,有用来做web,有做application的,试问,你用到了那些,我想那样的一点点开发东西,你自己写一个语言都可以解决问题了,但是你还是用到了它,为什么,就是因为他可以解决你的一些问题,
    你用spring也是一样的,它本身包含了很多很庞大的内容体系,但是你用到了哪些?你仅仅是用到了数据连接池配置?仅仅是用到了IOC管理?还是。。
    当然,你可以不用他,可以自己写管理,但是你们没有那么做,为什么,别人做出来了,你用着可以全局定位管理,可以让所有的一个工程很有序,为什么会这样子,我想楼主应该想想,
    所以不应该这样去看他,就跟哲学一样,辩证的去看待它也是未尝不可。谢谢
      

  38.   

    不要烂用spring ,没必要配置的bean就不要放在spring里边了.spring里边放需要配置的bean.流行不一定好,好也不一定流行,用得多,主要很多公司为了统一构架.
      

  39.   

    我说句中肯的
    spring的apo和ioc及事务是重点.都很有用.
    spring给我最大的感觉就是牺牲了开发方便性,提高了日后的维护方便性,如果项目不大,根本没必要用spring
      

  40.   

    很多人都有这疑惑
    感觉spring的事务管理和所谓对框架的整合不是出彩的地方,甚至于十分丑陋、画蛇添足。
    springIOC才有用,也仅用于复用。
      

  41.   

    项目中没用到spring,自己做的例子也就代替了工厂模式。。
    还是需要学习啊~!
      

  42.   

    哪里维护方便了?我只是用来做bean管理罢了
      

  43.   

    2002年 ROD Johnson写了SPRING的雏形。主要原因是他反感EJB的复杂度。
    但是时代变迁,EJB3.0推出后,已经简单了很多。IBM将EJB集成到了自己的开发框架中,但是没有选定SPRING。
    大连天健网有SPRING的影子,没事就出资源异常,这也是它的痛。
    spring的雏形基本覆盖了WEB的全方位。但是DAO模型与HI就重复了,webMVC 做的又没有struct好。
    剩下了反响控制和依赖注入这两种方式。这两种方式是一种新方式,都是高端面向接口编程的优秀方式。********
    spring很有前途,它是一种整体解决方案,但是也比较难学。
      

  44.   

    很认同87楼的分析,是不是应放弃spring,去研究EJB3啊?
      

  45.   

    看了这么多回复,还是没发现有价值的回复。叫好当然容易,具体好在哪里?
    搞java的也赶流行了现在,人云亦云
    我觉得很多项目在滥用spring,为了用而用
      

  46.   

    准备新作一个项目,也正犹豫该不该用spring呢。看完所有帖子,还是不能决定。
      

  47.   

    其实spring可以代替hibernate管理一些数据库的事物处理,不需要了rollback等。。甚至是连接数据库都是一句话的事情,也不用使用class.forname了。。楼主好好学把