准备重新构筑公司的框架,基于J2EE,不准备用EJB3。
1)现在老看人说SSH,Struts2和Hibernate的有点不用说了,请问Spring有什么非用不可的理由么?用Guice不可以取代它吗?
2)公司内部很多人用PHP,RoR,如何做一个框架让这些人都能舒服地开发?Facebook的框架说可以用多种语言,具体是怎么搞的?
3)我准备采用Struts2+Guice+Hibernate+Postgresql来做新的框架,请问还有别的技术可以大大简化代码,便于测试么?
4)哪种技术适合大型系统的分布式设计?分不够再加,谢谢。

解决方案 »

  1.   

    明天再加100,刚才忘记填分了,faint。
      

  2.   

    个人觉得Spring还是蛮好的
    (1)轻量级;
    (2)面向接口编程,层于层之间基于抽象,便于代码修改;
    (3)较好地集成类似Struts 、Hibernate等框架;
    (4)便于测试
    等等;
    也不是说非用不可,只是还蛮通用的,看具体需求了。我们那边用EJB的,Struts2确实很强大。
      

  3.   

    多谢回复,我们原先用EJB2的,但是负载均衡一直做不好(比如一个Node瘫痪了怎么处理等等),EJB3有改进么?
    另外听说spring做分散系统不太好,不知具体怎么样。
      

  4.   

    对于Spring的话以上的一些东西Spring它本身是这么说的,个人在学习的过程中也发现了这些特点,特别是轻量级与基于接口编程。其实,个人对于EJB的话了解的也不多,我们使用EJB的话也是事先有人封装好的,因为是电力相关行业开发,可能也是历史遗留问题吧……还的想你学习,个人感觉你应该比较要厉害点。
      

  5.   

    以下是本人的愚见:
    我觉得框架没有什么非用不可的说法,它仅仅是一个框架而已,没这个框架我们照样可以去开发;
    至于spring,我接触的不算很多,但我知道它的一个特点:全面的、模块化;怎么理解?
    Spring提供一种方法管理你的业务对象,比如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。
     
    如果你的工程倾向于测试驱动方面,那么用spring或许是个不错的选择!
      

  6.   

       书上找的
       Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 
       Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 
       轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 
       控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
       面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 
       容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 
      

  7.   

        框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 
         所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。 
      

  8.   

    Spring的IOC、AOP是非常有用的。对于事务的处理我觉得Spring太厉害了。
      

  9.   

    个人观点(不足之处请指出)   spring 核心.aop  ioc (Di)   对象之间的领带关系通过配置文件注入进来这样大大的降低了藕合度.提高重用性,这样以后的升级,二次开发方便很多.   aop 面向切面思想,能让你专心的做核心业务.把与核心无关的抽出来形成切面,再织入需要的地方.(比如日志等).当然spring 本身还提供了很多作用还远远不只是这些.上面只是核心
      

  10.   

    说的简练点,spring核心用处:
    1、IOC 降低代码之间耦合性,后期易扩展维护
    2、AOP 性能检测 访问控制 事务管理 日志记录
    3、很强的事务管理
    4、方便的融于各框架struts hibernate jbpm quartz jms dwr等等
    5、很强的子项目acegi webservice等
      

  11.   

    用什么框架要看公司的具体业务,技术框架总是晚于业务框架的。所以lz还是要先看看公司的业务是否合适用你选的框架.如果你想写一个开源的通用框架(比如struts,spring)还要考虑更多变的业务需求。
      

  12.   

    谢谢楼上的回答。
    可能没仔细看我的问题。
    我知道Spring大概能做什么,同样是做IoC,DI,AoP,
    Google Guice可以做得更好,而且不需要定义xml配置文件。用Annotation在编译时就可以发现错误。
    而且Guice支持Struts2,比Spring的速度要快。那么在这种情况下,Spring还有什么明显的好处吗?
      

  13.   

    spring的bean都是普通javabean,便于复用。
    还有就是用的很多,最起码Google Guice我是第一次听。
      

  14.   

    说的简练点,spring核心用处: 
    1、IOC 降低代码之间耦合性,后期易扩展维护 
    2、AOP 性能检测 访问控制 事务管理 日志记录 
    3、很强的事务管理 
    4、方便的融于各框架struts hibernate jbpm quartz jms dwr等等 
    5、很强的子项目acegi webservice等