我的最新日志

  • SpringSide 3.1.4 翻墙版发布

    2009-6-29

          某个雷电交加的晚上,提交代码回Google Code服务器居然需要翻墙....所以这个版本就叫做翻墙版以示纪念了。
          在满江红服务器故障的日子里,忽然觉得一个开源项目坚持上几年其实很不容易啊,像这个版本用到的IronTrackSQL,连主页都已经失效了。
          感谢晓钢,服务器硬生生又救回来了,一众国内开源项目避免了IronTrackSQL的下场。
          然后某个炎热的周末下午,花了100大元躲到仙踪林里叹冷气写完了最后的代码。所以,这次的版本,至少价值100大元的啊,挥泪免费下载了。

         在新公司深受一天开发三天改测试用例的折磨后,狂补SpringSide中的各色测试用例。还是工作原因,狂补Hibernate特性的演示。
         虽然3.0系列到了现在才刚刚达到60分的程度,几年下来坚持最长两三个月发一个版本,起码对自己的毅力是很满意了。
    • 升级到JUnit 4.
    • Springside Modules 狂补测试用例.
    • Selenium Web 自动测试演示.
    • Hibernate演示更新:详见后.
    • XML<->Java Bean转换:演示JAXB/XStream.
    • 日志高级应用演示:异步发送Log4j日志到数据库.
    • 报表演示: Amcharts Flash Chart.
    • SpringSecurity更新,1.验证码演示更新 , 2.扩展登录时间属性等属性.
    • 性能监控分析:Perf4j代码性能与P6Spy sql性能分析.
    其余详细更新记录见:http://wiki.springside.org.cn/display/SpringSide3/Release+Notes+3.1.4

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

    另外,随着Showcase的发展,3系列又不可避免的滑向繁杂,大家可以积极投诉觉得没必要演示或者演示的不好的东西,我很乐意剪掉di。

  • SpringSide 3.1.3.2发布

    2009-5-01

       早就发布了的版本,但文档拖到今天才整理完。期间又回炉了两次,保持每一个半月一版本的真不容易啊。
       这个版本里,Showcase示例开始长起来了。

    • JDK最低版本要求降回5.0,Maven 升级到2.1.0(终于学会多线程下载JAR了),花大力气大幅提升了quickstart脚本的成功率。
    • SpringSecurity演示:增加验证码集成演示,还将民怨很大的,SS3退步铁证之一的授权-URL对应关系从配置文件放回数据库里。
    • JMX演示:增加不使用MBean代理,直接读取属性/调用方法的示例。
    • Spring-Mail演示:多线程群发邮件 和 基于Freemarker模板生成的带附件的MIME邮件示例.
    • 定时任务演示:Quartz Timer/Cron Trigger 和 JDK5 SchduleExecutor示例。
    • Hibernate演示:基于Hibernate的Event机制自动为业务对象加入审计信息示例,OpenSessionInView忽略静态内容的请求。
    • 日志组件降回slf4j+log4j ,因为logback的用户还是太少了。
    • 原有代码持续改进。

  • 源码SVN地址切换

    2009-3-18


    因为JavaScud.org的服务器出现了一点点问题,SVN源码地址切换至Google Code:

    http://springside.googlecode.com/svn/springside3/trunk/

    请大家更新:)

    祝scud同志的硬盘早日康复。
  • SpringSide 3.1.2 更低调发布

    2009-3-14

         3.1.2是连跳了3.1.0和3.1.1两个版本后的GA版本,一边忙着Mini-Example这一亩三分地的升级,一边开始Showcase的演示......

    3.1.2版主要变更

    • Struts2:升级Struts 2.1.6 ,使用Convention Plugin 实现完善的MVC零配置文件。
    • JQuery:升级JQuery 1.3.2后速度大为加快,演示JQuery Ajax典型用法及跨域的Mashup。
    • Hibernate:支持DAO or Not DAO两种模式,对泛型DAO基类的功能增强与代码重构。
    • SpringSecurity:授权名称从容易混淆的ROLE_* 改为A_*。
    • Spring:使用@Autowired代替setter函数减少冗余代码。
    • JMX:演示Spring-JMX服务端与客户端,实现远程监控服务状态并修改服务配置。
    • 应用服务器:修改spring context文件路径的写法,在Glassfish2,Weblogic10上成功部署,并演示Tomcat的服务器优化配置。
    • 代码优化:大量代码进行了重构与重新注释。
        完整的变化历史见3.1.2 Release Notes

        无奈啊,Mini-Example总共才几行代码,但改来改去总是还有值得修改的地方,估计很快还要出一个3.1.3来。再日后Showcase开发计划详见Road Map

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

    2008-10-07


        估计未来半年一年内,国内的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-9-25

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

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

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

  • SpringSide 3.0.1接踵而来

    2008-8-05

       人家说看一个社区活不活跃,就看它的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-7-30

        怀胎十八个月的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-7-24

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

    这个月去了趟上海,想着回来无论如何也将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-6-14

    主站终于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.
Open Toolbar