首先要感谢楼主对开源的支持。 我也来发表下我对楼主帖子的一些看法: 楼主说到:
大家也有研究过ibatis官方的jpetstore demo,ibatis的jpetstore也是使用的struts,但是他在整个应用里只使用了一个action,而这个action的作用就相当于一个公用的转向器,除此以外没有任何的逻辑,而对于业务的处理都是通过javabean来实现,这种方式虽然还在验证中,但是我个人却非常喜欢,首先,这种方式尽可能的减弱了应用对struts的依赖,其次,业务逻辑的调用等一系列操作都是在javabean中进行,有利于项目的移植,如果我不想使用struts,而换成其他的框架,例如JSF以及spring 的web框架,简直就轻而易举,根本不需要太大变动
我认为,既然struts那么有侵入行的一个框架都能通过自己的设计(强调的是应用设计者的设计)来让对struts的依赖更少,那我就说,对于EasyJWeb来说,根据自己更优秀的设计,完全可以只在MVC层对EasyJWeb有一定的依赖,而这个依赖只存在于页面的合成策略上。
而且楼主谈到了一个javabean的结构, 那为什么不把这些业务bean放在spring里面管理?放在XWork容器里面管理? 实际上Easyjweb就是通过自己的一个微容器来达到对Action的注入(你可以为其配置spring容器,guice等等)
拿一段代码说话:
private IBBSService service;
public void setService(IBBSService service) { this.service = service; } public Page doFirstPage(WebForm form,Module module){ User user=UserContext.getUser(); form.addResult("user", user); form.addResult("totalMember", this.service.getTotalMember()); form.addResult("todayNum", this.service.getTodayNum()); form.addResult("totalTopicNum", this.service.getTotalTopicNum()); form.addResult("yesterdayNum", this.service.getYesterdayNum()); form.addResult("totalNum", this.service.getTotalNum()); form.addResult("newMembers", this.service.getNewMembers(5)); form.addResult("newTopicList", this.service.getNewTopicList(10)); form.addResult("newReplyTopicList", this.service.getNewReplyTopicList(10)); form.addResult("hotList1", this.service.getHotList1(5)); form.addResult("hotList2", this.service.getHotList2(5)); form.addResult("topDirList", this.service.getTopDirList()); return module.findPage("firstPage"); } 可以看到,在这个重构了官网bbs那个FirstPageAction后的action的效果,真正把mVC变的很薄。
实际上,blog的主要问题是设计问题,实际就是业务的方法粒度问题,而和框架的关系我觉得不是很大。
这个是我的一点看法。
|