`

关于项目框架设计的一点学习

阅读更多

这两天又在接触一个新项目,对于如何设计一个项目的框架有了点概念,关于web项目(对于oa系统来说)的主体感觉比较需要设计的几部分为:

1.  页面模板定义:关于view层展示,无论对于top(顶层菜单)+left(左边树状菜单)+right(主体内容)结构还是left+right结构,都需要首先定制一些模板,如struts中可使用tiles定义。

2.  分页标签:自定义一个比较通用的分页标签或者使用一些框架中自带的(如struts-menu或者JSF中的t:dataScroller),不过比较好的做法是基于其源码编写自己的分页标签。

3.  DB 设计:可使用Power Deisign等设计数据库表结构,产生相关的表。

4.  代码自动生成:编写代码生成脚本如build.xml文件的编写(根据DB生成代码,也可以忽略3,先建model,再从model生成代码和数据库schema),生成StrutsSpringHibernate相关文件。

 

关于代码的整体架构如下:

 

 

action 层:处理从view层传递过来的数据。

service 层:封装业务逻辑,一般同时在spring中声明事务代理。

dao 层:进行事务中的原子操作,同时在spring中注入相应的sessionFactory

 

Spring + Struts 取得springbean的两种常用方法:

1.     DelegatingActionProxy :将所有action标签中type属性设为org.springframework.web.struts.DelegatingActionProxy 也就是将action委托给了spring,同时在 action-servlets.xml 中配置一个于action标签path属性对应的bean(也就是beanname值等于actionpath),如:

struts-config.xml 中,以strutsplugin的方式,spring接管strutsaction

< action name = "portalForm" parameter = "method" path = "/portalAction" type = "org.springframework.web.struts.DelegatingActionProxy" scope = "request" >

    < forward name = "portalEdit" path = " pages/portalEdit.jsp" />

    < forward name = "portalList" path = " pages/portalList.jsp " />

</ action >

< plug-in className = "org.springframework.web.struts.ContextLoaderPlugIn" >

    < set-property property = "contextConfigLocation"

          value = "/WEB-INF/action-servlets.xml" />

</ plug-in >

 

action-servlets.xml (配置文件格式和spring配置一样)中:

< beans >

    < bean name = "/portalAction"

          class = "com.cn.lively.action.PortalMainAction" >

        < property name = "portalService" >

            < ref bean = "portalService" />

        </ property >

    </ bean >

</ beans >

 

2.     WebApplicationContextUtils.getRequiredWebApplicationContext :在action中获得springbean

public Object getService (String name) {  

    ApplicationContext wac =     WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());  

    return wac .getBean(name);  

}  

这种方式没有在struts里边加入springplugin,实际上是使用了依赖查找来获得对象,并且在servlet代码中硬编码了应用对象的bean名字。

 

附:

感觉一个国内小型项目(周期半年左右)的开发,完美的团队大概四个人左右就够了,

A :前期框架设计 + 开发过程中不断改进完美整个框架,角色——架构师

B :前期需求调研 + 开发过程中负责技术难度比较大的模块开发,角色——程序员

C :前期需求调研负责人 + 开发过程中负责业务逻辑复杂的模块开发,角色——项目负责人

D :前期需求调研 + 开发过程中负责模块开发,角色——程序员

同时BC负责共同解决开发中出现的技术和业务问题,C负责控制项目进度,

项目后期,BCD进行交叉测试,A负责review代码。

 

如果公司已经比较成熟的框架(即基本系统管理模块 + 代码自动生成),那么角色A可以省略,只需要BCD三个人即可进行项目开发,其中角色B在开发中担当一部分A的角色。

甚至可以只由BC两个人进行开发,把角色D的工作分担到BC身上,B侧重技术,C侧重业务逻辑。

分享到:
评论
1 楼 lihua2008love 2015-08-21  

相关推荐

    软件框架设计的艺术 Practical API Design 英文PDF原版(吾乐吧提供)

    《软件框架设计的艺术》这本书,英文原版名为"Practical API Design",是关于软件框架设计的宝贵资源,尤其适合那些寻求提升API设计能力和实践的IT专业人士。API(Application Programming Interface)是软件系统间...

    若依RuoYi框架剖析笔记,该笔记是在学习江南一点雨所录课程再结合自己的理解所写

    《若依RuoYi框架剖析笔记》是基于江南一点雨的课程并结合个人理解整理而成,涵盖了项目改造、框架结构分析以及多个关键功能模块的深入探讨。以下将逐一解析这些知识点。 1、**项目改造**:首先,从源代码仓库获取...

    开发框架学习

    ### 开发框架学习——深入理解MVC框架 ...通过以上分析可以看出,MVC框架的学习不仅涉及基础知识的理解,还需要掌握如何在实际项目中运用这些知识。希望以上的总结能够帮助大家更好地理解和掌握MVC框架的相关知识点。

    若依框架分布式事务配置和项目启动手册

    项目介绍文件通常包含框架的总体设计、主要特点和使用场景,帮助新开发者快速熟悉项目。快速了解文档则提供了快速入门的教程,包括创建新项目、编写基本的CRUD操作、设置权限等,使开发者能迅速上手开发。 总结,...

    E-Learning系统的框架与设计新理念.pdf

    E-Learning系统的框架设计不应过度依赖技术,而应平衡技术、内容和学习过程。学习管理系统虽然重要,但仅靠它是不够的。系统设计应考虑用户参与度,提供个性化学习路径,支持自我导向学习,并结合实际工作情境,以...

    web项目设计界面\给出了项目很多关键常用的供大家参考

    设计师通常会遵循“少即是多”的原则,通过合理的布局和色彩搭配来实现这一点。使用清晰的字体、对比色和适当的留白,可以增强可读性和视觉吸引力。同时,漂亮的界面并不单指美观,而是与品牌形象和用户需求相协调,...

    Java学习,一点就通,你还在等什么

    "Java学习,一点就通,你还在等什么"这个标题暗示了通过深入学习Java,你可以快速掌握其核心概念并应用于实际项目。对于那些对Java感兴趣或者想要提升自己编程技能的人来说,这是一个鼓励和召唤。 描述中提到的“最...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...

    驾考一点通APP项目.rar

    《驾考一点通APP项目》是一款专为驾驶考试学习者设计的应用程序,它结合了Java后端技术和Android前端技术,提供了全面的驾驶理论学习及模拟考试功能。此项目包含数据库设计、系统架构以及完整的开发思路,是学习和...

    JAVA SMART系统-系统框架设计与开发(源代码+论文)(1).zip

    基于Java的SMART系统框架设计通常会遵循以下几个关键原则: 1. **模块化**:SMART系统强调模块化的结构,这意味着每个功能单元都封装在一个独立的模块中,便于重用和独立开发。Java的包(Package)和接口...

    PyTorch是一个开源的机器学习框架,主要用于深度学习任务 以下是关于PyTorch的一些主要特点和功能: 动态图:与Ten

    ### PyTorch:开源机器学习框架的关键特性与功能 #### 动态图机制:灵活性与高效性的完美结合 PyTorch作为一个开源的机器学习框架,其显著的特点之一就是支持动态图机制。相比于TensorFlow等其他框架所采用的静态...

    VB学习一点通 VB零起步

    1. **说明.txt**:这个文件很可能包含了关于VB学习的基本指导,包括如何安装开发环境、启动新项目,以及如何利用提供的教程进行学习。 2. **教程阅读器下载.url**:这是一个链接,可能指向一个在线VB教程或阅读器,...

    css框架 可以幫你很簡單的设计div+css的布局

    标题提到的“css框架 可以幫你很簡單的设计div+css的布局”强调了这一点,它表明存在一个框架可以帮助设计师更轻松地创建基于div和CSS的网页结构。 CSS框架通常包含一组预定义的样式、布局网格系统、响应式设计组件...

    五点硬件电路设计思路

    要如何完整地设计一套硬件电路设计,下面为大家分享我的几点个人经验:1)总体思路设计硬件电路,大的框架和架构要搞清楚,但要做到这一点还真不容易。有些大框架也许自己的老板、老师已经想好,自己只是把思路具体...

    毕业设计源码之公考上岸通(公考学习通).zip

    【标题】"毕业设计源码之公考上岸通(公考学习通)"是一个与公考学习相关的软件项目,可能是为了帮助考生准备公务员考试而开发的一款应用。公考通常涵盖行政职业能力测验、申论等多种考试科目,因此,这个项目可能...

    这是一个网上书城项目,采用当前最流行的框架Spring-SpringMVC-MyBatis设计,主要是对之前用Jsp/Servl

    可以下载,下载后直接在mysql中导入即可,因为好多人问到,所以在这同意说明一下,我是感觉你们一点也不认真,只看到代码,没看到附件,或许也是对开源中国项目托管的不熟悉吧,这个项目适合一些初学者学习框架用,...

    自定义JS类框架

    自定义框架可能利用这一点创建通用的功能。 3. jQuery集成:jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画和Ajax交互。在自定义JS类框架中,可能会将jQuery的一些功能封装成类方法,以提供...

    孙卫琴对大家java学习的一点建议

    【孙卫琴对Java学习的一点建议】 Java学习是一条漫长而充满挑战的道路,从基础的J2SE(Java Standard Edition)到复杂的J2EE(Java Enterprise Edition)的过渡,需要扎实的基础和深入的理解。孙卫琴,一位知名的...

    后台框架后台框架后台框架

    【标题】"后台框架后台框架后台框架" 指的是一个专门用于构建后端系统的基础架构,这通常包括一系列的设计模式、开发工具、框架库以及编程规范,它们旨在提高开发效率,确保系统的稳定性和可扩展性。在IT行业中,...

    这是一个基于SSM框架实现的界面美观功能完整的论坛可在线演示

    SSM框架,全称为Spring、SpringMVC和MyBatis的组合,是Java开发中常用的一种Web应用开发框架。...通过学习和理解这个项目,开发者可以提升自己的全栈开发能力,同时也可以借鉴其设计思路来构建自己的社区平台。

Global site tag (gtag.js) - Google Analytics