• SpringSide 3.0.3 Stable版,SSH2也就这样了. *

    2008-10-07 09:45:33


        估计未来半年一年内,国内的Java主流都还会是这种Spring + Hibernate +Struts2,但约定大于配置的风格。
         
        3.0.3后,Mini-Example算是告一段落,SSH2的惯用法也就那样了。个人的理解总有局限,接下来就要靠大家的反馈推动。

        这次的主要改动有:
    • 使用Spring 2.5的IOC annotation 实现Service层/Dao层零配置。
    • 使用Spring 2.5的新TestContext Framework。
    • Hibernate Ehcache Lv2 缓存:1. 配置优化 2.集群环境使用。
    • Struts2.1版zero-config 与 code-behind的合并,实现零配置。
        往后会一边依据社区的反馈修改,一边在showcase示例里演示一些表格控件(如GT-Grid),一些Hibernate的应用(如Hibernate Envers)。

        而主要精力,将开始论坛示例,会像2.0版的书店示例那样综合展示大量开源项目,但它是完整的,且支持可伸缩与高可靠性的集群及Web2.0的特征。

        变更记录: http://wiki.springside.org.cn/display/SpringSide3/ChangeLog
        下载地地:http://www.springside.org.cn/download.php
        讨论区:http://forum.springside.org.cn/

        欢迎大家试用反馈,共同打造我们的SSH2较佳实践。
  • SpringSide 3.0.2 ,一个相对满意的版本 *

    2008-09-25 02:42:49

       有一年半没发新版的SpringSide, 在3.0的发布时有点急了.这次的版本, 才是一个相对让自己满意的版本.
       原本大家投诉的文档粗略,没有傻瓜式快速开始版这次都作了改进,另有颇多代码上的更新,详见3.0.2版完整修改记录.

       接下来还会继续在mini-examples上打滚一段时间,毕竟这是团队每日开发的基础,然后才会开始那个Web2.0的,高可靠高伸缩性的论坛示例.

       下载地址:http://www.springside.org.cn/download.php

  • SpringSide 3.0.1接踵而来 *

    2008-08-05 15:48:54

       人家说看一个社区活不活跃,就看它的X.0.0发布之后,X.0.1什么时候出来了。

       主要修正的地方:
    • IDE项目文件 从D版MyEclipse 换成 Eclipse 3.4 for Java EE developers,虽然Eclipse 3.4毫无悬念的要粗糙一截。
    • 全maven的编译部署脚本,配上全界面化的Hudson持续集成服务器,感觉很不错。
    • 为了某些打死不用maven的兄弟,增加了一个附带所有jar的下载版本 SpringSide3.0.1 withdout maven,但就需要大家自己完成后面的配置了。
    • Acegi 2.0改到一种比较合理的模式:
      分用户->角色->授权三级。
      前两者保存在数据库中,由用户管理;
      授权则由程序员规划,硬编码在jsp代码(taglib),业务方法(annoatation),URL配置文件(ApplicationContext.xml)中。
    • Struts2CRUDAction定义了更多标准操作,HibernateSimpleDao改善了分页部分代码。
     
        3.0.2的开发计划见 Todolist , 同时也会展开完整论坛示例的开发,欢迎大家继续讨论SpringSide接下来的选型、特性、方向.....
  • SpringSide 3.0 低调发布 *

    2008-07-30 00:28:26

        怀胎十八个月的SpringSide 3.0 终于低调的发布了。

        这个版本里的SpringSide,终于放弃梦想,不再奢望做一个框架,或者一个像RoR/Gails那样极简的、创新的封装,而是对如何用不轻也不重的主流选型、编程实践来开发JavaEE企业应用进行老老实实的总结。
        如果说Sun 的代码规范规定了大家在代码中如何命名变量,怎么编写注释的话,SpringSide就是对JavaEE企业应用开发的建议。

        当然,SpringSide 3.0 还同步了这一年半里Java社区的技术升级:JAX-WS 2.0/CXF , Struts2, Spring 2.5, Acegi 2.0 ... 也全面引入了Maven作为项目管理与新项目生成的工具。

        在第一个版本中,只发布了3个典型场景的示例:
    • 迷你后台Web服务(mini-service) 场景: Spring + Hibernate + JAX-WS2 (CXF) 的组合。
    • 迷你CRUD管理界面(mini-web)场景:Spring + Hibernate + Struts 2 + Acegi Security 2的组合。
    • 超轻量级网站前台(extreme-web)场景:Jsp + Spring Jdbc 无配置文件的超轻量组合,专扫极速网站Demo,墙角小应用之类的工作。
        而spring-core则如自己所愿非常的小,因为SpringSide不提倡把什么都再封装一遍。

        下载地址:http://www.springside.org.cn/download.php
        文档地址:http://wiki.springside.org.cn/display/SpringSide3
  • 关于3.0跳票与extreme-web示例

    2008-07-24 22:36:01

    一回头又一个月,日子过得太快了,快到你想哭。

    这个月去了趟上海,想着回来无论如何也将3.0版给发了吧。虽然亲爱的sourceforge.net被GFW了。

    但接下来一次贴近团队的快速开发,又感到SpringSide3.0还是太重了。

    对于演示原型,上午要下午给的快速交付,或者某些不知道到底一年有多少个人点进去的网站角落,或者极少数管理人员才用到的管理功能,在恨不能php,ror的时候,你会想起jsp+jdbc的温暖。

    又或者你请到了只会写jsp和sql的极品,又想让他明天开始干活.....

    传统的jsp+jdbc写法不堪回首,所以另做了这个extreme-web风格示例, 在jsp and jdbc and no config file的同时,仍然是个可堪一观的MVC,仍然基于亲爱的Spring.

    View层:一个jsp(见webapp/user/user.jsp)
       Web应用里,单纯的内容展示型场景占绝大多数。
       我们也单纯的在jsp的开始代码调用Model层的Service Pojo查出所需内容。
       然后可以继续忍受压力,直接在页面中嵌入显示代码。也可以将结果放入贯通两界的pageContext里,换用Jsp2.0 EL和JSTL taglib来作展示。
       一页到尾,不要再扯什么Struts2 Action,什么struts.xml。

    Control层:还是一个jsp(见webapp/user/userAction.jsp)
        少量的用户提交内容的场景,就会来到这个代替Struts2 Action的jsp,由它来调用Model层的Service Bean,然后又redirect/forward回View层的jsp。
        如果顺手,可以用spring的DataBinder 将request参数绑定到DTO。否则就N多request.getParameter("foo")手工组合。

    Model层:一个使用Spring JDBC的POJO(见src/.../UserService.java)
        为什么不继续用jsp,彻底的改代码不重启应用?因为舍不得Spring的JDBCTemplate/DataSource/Transcation这一系列功能。
        用@Service注册bean,就不用再写applicationContext.xml定义helloService bean了。
        继续用@Transcational 定义事务。
        Spring的SimpleJDBCTemplate其实也挺好用的,顺手的话,可以将输入参数/ResultSet 直接反射到DTO上。
        不顺手的话,用MapSqlParameterSource绑定DTO到输入参数,用ParameterizedRowMapper绑定ResultSet到DTO。

    除了上面几点,其他地方也简化了,比如maven的功能退化到jar管理,连接池直接用commons-dbcp定义不依赖应用服务器等等...

    Extreme比较适应那些上午要下午给的快速交付,或者某些不知道到底一年有多少个人点进去的角落。

    如果你请到了只会写jsp和sql的极品,extremeweb也能让他明天开始干活,但代码依然可堪一观。



    再看原来的SpringSide3.0,感觉至少还要改几个地方,才好意思叫3.0 Stable:

    1.从JPA回退到Hibernate, JPA等了一年在国内都没啥市场,比hibernate又没啥进步。
    2.Service+DAO层还是有点多余。
    3.Struts2Action里的基类有点不伦不类,还是取消的好。
    4.其他觉得臃肿的地方。

    下次预发布估计是奥运来临了.


  • 打扫,准备发布3.0

    2008-06-14 23:41:34

    主站终于ICP注册完毕,继续写开发周记。

    预计下周可以发布一个3.0了吧。还有很多来不及做的东西,统统划到了下一个版本里。(见wiki中的todolist)

    问:既然还有这么多来不及做的东西,这个版本为什么要叫3.0呢,叫3.0M1,3.0 RC1不好吗?

    开发界不比互联网,Web2.0永远Beta的精神是不适用的,我自己就几乎不看不用不是Stable的东西。所以为了上座率,这个版本姑且叫3.0吧,东西虽然少点,但至少是正确可靠的。

    这周的主要是wiki上文档的编写和一些细碎修改,在SVN的log里很清楚,着重增强了代码可读性。可读性一是靠注释,二就是靠爱国卫生运动,将项目始终保持在清爽简洁的状态。

    在SpringSide 2.0的末期,整个项目就枝枝蔓蔓颇有几分失控。另外,简洁也不等于代码少,有时候用诡异的语言诡异的语法,很少的代码做很多的事情,可读性反而很低。有些代码为了可读性,在不牺牲性能的情况下宁愿多写几行。

    除bugfix,演示门面改善和爱国卫生运动,注释运动外,一些比较明显的修改:

    • Derby数据库脱离对MyEclipse的依赖,至此整个开发环境已经基本不依赖于Myeclipse。
    • 统一使用Strust2的taglib,不使用JSTL,避免同时使用时的混乱。
    • 整理cleanup 和 formatter 规则
    • acegi的配置定义修改,不过滤css与图片
    • springside-core的pom.xml中,依赖设为optional,因为依赖springside-core的项目,不一定需要springside-core的全部功能,也就不需要连环依赖所有springside-core依赖的jar.
  • 08年第二周:又见struts2

    2008-01-15 09:47:33

        这周又把MVC转成Struts2了。S1到S3,Spring MVC->Struts->Struts2三个action-base的mvc framework,只怪Java的MVC Framework实在选择太多。但愿这是最后一个了,本来action-base就是件很简单的事情而已...

        另外,温少又给SS3挑了些刺,改完后,3.0M1离发布不远了。

     

  • 勤有功戲无益- 08年第一周的更新日志 *

    2008-01-06 23:54:00

    1.综合:

    • 使用log4j作者新作slf4j/logback 代替 commons-logging/log4j,不再需要为了一点点性能而到处是if(logger.isDebugabble())..... 
    • 使用Spring2.5标注:
      使用@Required,保证某些使用autowired的关键属性必须注入.
      使用@PostContrust 代替原来的initBean接口afterPropertiySet()函数,见WebServiceSupport.java.
      思考再三,还是没有使用EJB3的@Resource(name="userManager") 这种注入配置方式,太耦合了
    • 修改Spring的ApplicationContext文件:
      Schema改到Spring 2.5.
      分离applicationContext-production.xml,对应applicationContext-test.xml存放生产环境的配置变量.
      合并applicationContext-service和applicationContext-dao,但可按模块划分此文件.

    2. mini-service:

    • 修改DTO的JAXB2.0定义,取消accessType定义,使用默认的PUBLIC_MEMBER.
    • 修正之前FaultException在WSDL中没有正确反射的bug.
    • 修改WebServiceSupport类加强dozer的初始化管理.
    • 修正项目生成模板service-archtype积累下来的问题.

    3. mini-web:

    • 新增最初级的acegi使用示例
      根据acegi1.0.6示例代码,以URL作为权限判断依据,角色与URL的对应关系由开发人员在配置文件中预设,用户可在管理界面设定用户的角色。
      这种使用对旧系统代码的影响极小,一个service.security.UserDetailServiceImpl类,一个login.jsp,并修改UserManager类的update/delete方法使之刷新UserDetail缓存即可。

    4.其他:

    • SpringSide主站与3.0 Wiki的整理。
    • 加大XML文件宽度到120字符,重新格式化。
    • rename: si(系统交互)层->ws(Web Service)层,UserService->UserManager。

    5. 下周工作计划:

    • 受到InfoQ上那本Startging Struts2诱惑,mini-web打算换成Struts2
    • ExtJS的widgets
    • MyEclipse总是受人诟病,但是用WTP2.0大家就没法QuickStart了,头痛中。 
  • SpringSide 3.0启动

    2007-11-30 13:16:40

    沉默的半年,如迷的呼吸,SpringSide3.0 重启完成,正式上路....

    SpringSide 3.0 主页

  • SpringSide 2.0 RC1 Winter Edition发布 *

    2007-01-23 15:32:23

    1. 概述

       传说中的圣诞版快要变成新春版的时候,SpringSide的Winter Edition来了。
       这个版本主要增加了SS的系统友好度,开始SpringSide-IDE的项目,Acegi、JBossRules、Compass也重新铺开。

    2.New Feature

    2.1 代码质量与用户友好度升级

    • 建立了SpringSide代码规范,极端时使用IDEA-Eclipse-Checkstyle-PMD-Findbugs 五层保湿,平时使用Eclipse+Checkstyle 简单控制代码质量。
    • SpringSide-Core 收集大家的反馈意见后,再度重构。
    • 项目结构进行了简化,丢弃Maven的深闺式布局。
    • 增加新建项目时的友好度,Ant 脚本与Library不再必须依赖SpringSide目录。

      2.2 Springside-IDE

             蒋新主理的SpringSide-IDE,可以新建一个SpringSide结构的Java项目,自完成一切必要的设置。
             用户可以在其上使用MyEclipse的右键菜单Add Web Project Abillity 升级为MyEclipse项目。
             这是SpringSide-IDE迈出的第一步。


      2.3 Acegi Security

              cac提供Acegi SS1.0M3版的化简版,更加清晰明了,在数据库中存放用户角色资源三表,仅提供URL过滤安全保护。


      2.4 JBossRules RuleEngine

             白衣参考JBoss Seam的做法,升级了对JBossRules的封装,并在书店示例进行更好的用法演示。


      2.5 Compass SearchEngine

             Scheweigen重做的 Compass示例

      • 脱离对Spring MVC的依赖,仿造其Spring MVC Controller的写法提供对Compass的封装,演示在Struts下的使用。
      • 加入Highlighter的演示。
      • 增加应用启动时重建索引的。

        2.6 ActiveMQ Demo Upgrade

                cctvx1 升级了ActiveMQ的Demo

        • 增加持久化到数据库的演示。
        • 增加使用Jenck JCA Container代替Spring的Container的演示。

          2.7 DBUnit 

                Anders小明增加了使用DBUnit的Selenium基类,使用DBUnit自动保持集成测试前后的数据库状态。

        1. 送出第一批纪念品--SpringSide Logo的杯子 *

          2006-12-30 14:54:26

          Cac 终于印好了第一批SpringSide纪念品:



             
                由cac负责将杯子邮寄给下面的得主:

                     请各位将邮寄地址发送到cac的邮箱: johnsonchen916@gmail.com
                     希望获得SpringSide第一批纪念品的会员(或许,Maybe以后会很有纪念价值),赶紧在春节前将积分灌到300呀!!!!
                    
                     原本要印T恤的,错过了入货的最好时间--夏季清仓大甩卖的时候,大家希望下次送什么,回帖说一下阿。
          1. 蒋新加入SpringSide团队 *

            2006-12-22 14:48:20

               岁末之际,SpringSide团队又有高手加入,负责SpringSide-IDE开发。

              
               个人简介:蒋新,毕业于清华大学软件学院,主要从事eclipse插件开发,对开源软件十分感兴趣,注重软件的实用,也是linux系统的爱好者。目前在北京工作。(mail: xinjiang1979@gmail.com)
          2. 启动SpringSide-IDE项目 *

            2006-12-22 11:34:13

             蒋新正式加盟SpringSide团队,主持SpringSide-IDE的开发。

               SpringSide-IDE 的初期规划:
               一是,生成SpringSide架构的项目。
                     生成的项目整合了用户所选构件的jar 和配置文件,是一个已配置好一切的Java项目,用户如果习惯用MyEclipse,可以用它的Add Web Project Capabilities 功能转为MyEclipse Web项目。
               二是,随时添加SpringSide构件。
               三是,CRUD的Java源码、测试代码、配置文件的生成
                     初期基于Hibernate Tools进行扩展,使用数据库反向或者Annotation POJO作为元数据,使用FreeMarker作为代码生成的模板。

                远期规划:
                一是,Java框架现在最烦的就是配置管理,SpringSide打算避开MyEclipse已经覆盖的功能,但模仿它的做法,对SpringSide中各开源构件提供XML配置文件,Annotation管理与代码生成。
                同时可将这些功能反馈给该开源项目。
                二是,打造一个Eclipse WTP+Hibernate Tools+ Spring IDE+ SpringSide-IDE的免费JavaEE开发工具。

                 欢迎加入:
                欢迎大家在springside论坛的springside办公室板块跟贴报名加入,要求是熟悉Eclipse Plugin开发并有相关经验
          3. Spring2.0,Struts2.0,SpringSide 2.0--SpringSide 2.0M1 发布

            2006-11-28 00:19:23

                 SpringSide以Spring Framework为核心,为大家提供了一个Pragmatic的企业应用KickStart 与Full-Stack 的开源构件库。

                 它以RoR式的简约风格,将Java社区众多优秀轻量级开源项目整军为一个黏合的框架,以构件式的开发架构,配合Ant与Eclipse plugin的生成工具,作为大家开发Java企业应用的方便起点。

                 同时,它的示例代码充分演示了开发团队与SpringSide社区共同总结的,Java企业应用领域方方面面的Best Practice。

              1. 升级概述

                 Spring发了2.0,Struts发了2.0,SS也来凑凑2.0的热闹。下载地址:http://www.springside.org.cn/download.php

                SpringSide 2.0改用了Pragmatic版的Struts作为MVC主打框架,重写了所有的代码,增加了新项目生成的命令和构件化的开源栈,还增加了方便新手入门的Helloworld示例。

                随着Java开源社区的日日进步,SpringSide升级了包括Spring 2.0的AOP事务配置, Hibernate3.2的annotation模式,XFire1.2.2的最新简约配置及JSR181模式,以及ActiveMQ4.1 的Message Driven POJO新模式。

                另外,还增加了iBatis数据访问模式和一系列Ajax Widgets,并全面推行了Selenium集成测试。

                在2.0版的漫长建设过程中,江南白衣anders小明caccctvx1david.turingtotodo差沙彭清徐昊组成了9人核心开发团队

                另外的收获有在 满江红建立的新SpringSide社区Confluence Wiki在线文档,老外的IDEA、Jira与Confluence Wiki的开源项目免费授权。

                注意,因为代码全部重写,SpringSide1.0M3中已有的一些功能要在下个版本中才能重写完毕,包括Acegi 安全引擎, JBoss Rules规则引擎,JBPM 工作流引擎,BIRT报表,Lucene/Compass 搜索引擎和Dojo等,请大家耐心等待。


            2. 升级项详细说明

            2.1 项目快速生成与构件化的开源栈

                某个上午费了很长时间才弄好一个Demo程序的框框是SpringSide 2.0的动力。

                cctvx1建立了SpringSide的首个Eclipse插件,一个快速生成项目框框的Ant脚本和Eclipse plugin,你只要输入项目的名称、路径和需要安装的构件,就能马上拥有一个完全可运行的项目骨架。

            2.2 Struts归来

               鉴于Struts在公司内压倒性的用户数,为了使项目实用于最多的程序员,从Spring MVC改为Pragmatic版的Struts。

               当然,这个Struts Pragmatic得与spring mvc无异,和旧式struts的用法不会一样。提供了一个CRUDAction基类封装演示,让子类只要声明一下entity类型就拥有CRUD的方法。

            2.3 为质量重写所有代码

               SS2.0的标准是,宁愿缺失功能,也不提供有问题的代码。新代码都经过了质量工具的检查和相当的测试用例。

               anders小明在core里演示了用EasyMock测试框架类的做法。

            2.4 增加Helloworld入门示例

               原有的Bookstore示例对新手太不友好,所以新增了一个Spring+Struts+Hiberante的标准用户管理界面用于教学用途。

            2.5 Hibernate 3.2GA annotation-接近RoR的代码量

                彭清徐昊在 Hibernate使用Annotation替代了 hbm映射配置文件。

                因为annotation有着和RoR一样有着默认免配置的特质,配置量大为减少。加上JDK5泛型和Hibernate强基类,数据访问层的CRUD代码量已经很接近RoR。

            2.6 增加iBatis

                因为iBatis很适合一些项目,cctvx1cac对iBatis 增加了springside-style的封装和Helloworld示例演示。

            2.7 升级Spring 2.0

                 原来的事务管理使用的baseTranscationManager 定义方式对AOP的灵活运用有较大限制,Spring 2.0换为AspectJ定义,为AOP应用提供了更好的空间。

            2.8 更新更简约的XFire 与JSR181 例子

                 XFire不断发展,而它自己的Example和网上的例子都缺乏及时更新。其实最新版的XFire已经完全摆脱Spring MVC来实现与Spring的集成,所需的配置代码更少了。

                另外,david.turing提供了XFire JSR181,一个以annotation代替XML 配置Web Service的模式。

            2.9 升级ActiveMQ4.1

                 cctvx1使用Spring 2.0 schema的新JMS配置文件等新一代完全Message Driven POJO的JMS使用方式。

            2.10 增加的Ajax Widgets

                totodo差沙加入了Ajax Upload上传进度条JSCalendar日历控件scrīptaculous--Effective效果

            2.11 全面Selenium 集成测试

                在原有UnitTest的基础上,增加Selenium持续测试,每天持续运行保证提交代码的正确。

            3. 感谢名单

              特别感谢曹晓刚,为SpringSide提供了强力的Host主机安装了新的社区,主站、日志和Wiki。

              继续感谢飞云小侠,为SpringSide提供Subversion与Jira的Host服务。
             
              完整Sponsors列表见http://www.springside.org.cn/sponsors.php

              然后感谢下列代码提交者:xmx0632,zhenggc,无声的海浪

              感谢下列社区积极份子: guangnian0412,酸酸菜,beike,zidong,loveflying lsqlisterlovefly_zeroivan斧子mark_dingyuanh819lanluquanleondu,uu_snow,carylttitfly地主,hgq0011,anders,chengshwu,mingissam,6fish,javary,ritchie

          4. IDEA Free License!!!!! *

            2006-11-10 09:01:02

              

               终于申请到了开发组最爱的Intellij IDEA的Free License,而且还是Team Common的,开发团队的同志都可以用哦。

               大家谁想要的,就踊跃加入SpringSide开发团队吧:)

             

          5. SpringSide 2.0 M1-alpha3 发布--全民CodeReview时代开始 *

            2006-11-04 00:19:38

            SpringSide2.0 M1 alpha3 已经放出,作为M1的最后一个alpha版,基本功能已完成,就等着补齐文档和大家的疯狂Review了。

            CodeReview期间,派分标准提高3倍(每次至少3分),欢迎大家一起Review,合力打造一个适合自己项目习惯的SpringSide。

            下载地址:    http://www.springside.org.cn/download.php

            更新说明:http://wiki.springside.org.cn/display/springside/ReleaseNotes2.0M1+Release+Notes




            但愿大家忘记了,今天本来应该发布的是2.0M1....逃啊......


            另外,放出后的代码还在不断改进中,大家可以用SVN 下载最新版:http://svn.javascud.org/svn/springside/springside2/trunk
          6. 申请到了JIRA和Confluence Wiki的License *

            2006-11-02 14:19:21

            在cac无敌的E文申请信下,atlassian.com 今天 给springside.org.cn 批准了  JIRAConfluence Wiki 的Open Source Licenses:)
          Open Toolbar