Platform大体分为3个部分:
- 平台基础
- 数据访问
- web
一、平台基础结构
不难看出Platform和Application都是由Spring管理的Bean,但他们存在与不同的ApplicationContext中。
Platform与Application由PlatformContextLoader加载平台基础的spring配置文件进行初始化,之后按照Application的层级结构逐一初始化应用的SpringContext并设置父子关系。在所有应用初始化完毕之后PlatformContextLoaderServlet初始化web层控制器的具体实现,所有步骤执行完毕后PlatformContextLoaderServlet接受访问,时序图贴上看起来会更加直白。

在这里PlatformContextLoaderServlet有点奇怪,他即初始化应用又扮演ActionServlet的角色接受访问,有空再改。
二、数据访问结构
最根本就是GenericDao的实现,考虑实现分页的方式繁多,抽出了一个PaginationProcessor分离分页实现逻辑。
三、web层结构

MVCFacade方便于获得各种类型参数。
丢弃了Struts的Form,且每个URL对应独立的BaseAction实现,实在厌恶过于臃肿的Action。
四、一个简单的例子
1.Manager(简化一下,这里就不写DAO了)
public class ArticleManagerImpl extends GenericDaoDefault<Article> implements ArticleManager {
}
2.Action
public class ArticleSaveAction extends BaseAction {
private static ArticleManager articleMgr = (ArticleManager) Platform.getInstance().getBean("test", ArticleManager.BEAN_ID);
/* (non-Javadoc)
* @see com.funstool.platform.struts.BaseAction#execute(com.funstool.platform.common.web.MVCFacade)
*/
@Override
public String execute(MVCFacade mvc) throws MessageException {
try {
String content = mvc.getParameter("content");
Article article = new Article();
article.setContent(content);
articleMgr.save(article);
return MVCFacade.FORWARD_NAME_SUCCESS;
} catch (Exception ex) {
logger.error("保存文章信息错误。", ex);
return MVCFacade.FORWARD_NAME_FAILURE;
}
}
}
源代码请见:platform.zip
例子完整配置及代码请见:example.zip
本文深入探讨了Platform架构的三大组成部分:平台基础、数据访问与Web层,详细阐述了如何通过Spring管理Bean进行初始化,并强调了GenericDao实现与分页处理器PaginationProcessor的作用。此外,介绍了MVCFacade在处理各种参数获取方面的便利性,以及抛弃传统Struts Form,采用独立BaseAction实现的方法,旨在提供更简洁高效的开发体验。
356

被折叠的 条评论
为什么被折叠?



