这两天又在接触一个新项目,对于如何设计一个项目的框架有了点概念,关于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),生成Struts、Spring、Hibernate相关文件。
关于代码的整体架构如下:
action 层:处理从view层传递过来的数据。
service 层:封装业务逻辑,一般同时在spring中声明事务代理。
dao 层:进行事务中的原子操作,同时在spring中注入相应的sessionFactory。
Spring + Struts 取得spring的bean的两种常用方法:
1. DelegatingActionProxy :将所有action标签中type属性设为org.springframework.web.struts.DelegatingActionProxy 也就是将action委托给了spring,同时在 action-servlets.xml 中配置一个于action标签path属性对应的bean(也就是bean的name值等于action的path值),如:
struts-config.xml 中,以struts的plugin的方式,让spring接管struts的action:
< 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中获得spring的bean,
public Object getService (String name) {
ApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());
return wac .getBean(name);
}
这种方式没有在struts里边加入spring的plugin,实际上是使用了依赖查找来获得对象,并且在servlet代码中硬编码了应用对象的bean名字。
附:
感觉一个国内小型项目(周期半年左右)的开发,完美的团队大概四个人左右就够了,
A :前期框架设计 + 开发过程中不断改进完美整个框架,角色——架构师
B :前期需求调研 + 开发过程中负责技术难度比较大的模块开发,角色——程序员
C :前期需求调研负责人 + 开发过程中负责业务逻辑复杂的模块开发,角色——项目负责人
D :前期需求调研 + 开发过程中负责模块开发,角色——程序员
同时B、C负责共同解决开发中出现的技术和业务问题,C负责控制项目进度,
项目后期,B、C、D进行交叉测试,A负责review代码。
如果公司已经比较成熟的框架(即基本系统管理模块 + 代码自动生成),那么角色A可以省略,只需要B、C、D三个人即可进行项目开发,其中角色B在开发中担当一部分A的角色。
甚至可以只由B、C两个人进行开发,把角色D的工作分担到B、C身上,B侧重技术,C侧重业务逻辑。
分享到:
相关推荐
《软件框架设计的艺术》这本书,英文原版名为"Practical API Design",是关于软件框架设计的宝贵资源,尤其适合那些寻求提升API设计能力和实践的IT专业人士。API(Application Programming Interface)是软件系统间...
《若依RuoYi框架剖析笔记》是基于江南一点雨的课程并结合个人理解整理而成,涵盖了项目改造、框架结构分析以及多个关键功能模块的深入探讨。以下将逐一解析这些知识点。 1、**项目改造**:首先,从源代码仓库获取...
整体来看,基于Vue框架的毕设项目设计源码不仅是一个前端项目,它还是一个全栈学习的范例,涉及到前后端分离、接口设计、状态管理等多方面的知识。该项目既展现了学生对Vue框架的理解和应用能力,也体现了他们在前端...
这一点非常重要,因为它保护了原作者的知识产权,同时也确保了学习者能够在一个纯粹的学术环境中使用该项目,避免不必要的法律风险和道德争议。 这个项目是一个高质量的学习资源,它不仅提供了完整的、经过测试的...
### 开发框架学习——深入理解MVC框架 ...通过以上分析可以看出,MVC框架的学习不仅涉及基础知识的理解,还需要掌握如何在实际项目中运用这些知识。希望以上的总结能够帮助大家更好地理解和掌握MVC框架的相关知识点。
基于Java的TestNG自动化测试框架设计源码 Java语言作为一种广泛使用的编程语言,其跨平台性和面向对象的特性使得它非常适合进行大型软件项目的开发。在软件开发的过程中,测试工作占据着非常重要的位置。自动化测试...
此外,该系统设计和实现的过程中,也体现了良好的编程习惯和项目管理能力,这对于想要提升自身软件开发职业素养的学习者来说,是非常宝贵的参考经验。通过学习和实践本项目,学习者将能够更好地理解软件开发的全生命...
这一点对于新手开发者来说尤为重要,它降低了学习和入门的门槛。而对于有经验的开发者,高可定制性则允许他们根据项目需求进行深入的自定义和优化,使得框架能够适应各种不同的应用场景。 此外,该项目的源码结构...
本文将针对“情境四家居空间施工图设计项目原始平面框架图PPT教案”的教案内容展开深入讨论,以帮助室内设计师和学习者全面理解原始平面框架图的绘制要点和重要性。 一、原始平面框架图的主要内容 原始平面框架图...
本项目“毕业设计&课设_Spring Boot 2 框架逐步构建RESTful API 服务的项目”提供了一个完整的案例,用以展示如何使用Spring Boot 2来构建RESTful API服务,非常适合计算机科学与技术、人工智能等相关专业的学生进行...
E-Learning系统的框架设计不应过度依赖技术,而应平衡技术、内容和学习过程。学习管理系统虽然重要,但仅靠它是不够的。系统设计应考虑用户参与度,提供个性化学习路径,支持自我导向学习,并结合实际工作情境,以...
本文档是一份关于Spring框架的毕业设计和课程设计资源包,包含了深入理解Spring框架源码和核心原理所需的多种核心功能及使用方法。项目源码经过严格测试,确保其稳定性和可靠性,便于学习者进行开发实践。 资源包...
本项目“基于Python的Django框架的起田网站项目基础共用模块设计源码”正是在这样的背景下诞生的。 项目采用Python语言,这是因为Python以其简洁明了的语法、强大的社区支持和丰富的库资源而受到广泛欢迎。Python的...
MXNet是一种先进的深度学习框架,其设计理念强调了功能的完整性、编程的灵活性和扩展的易用性。该框架以支持当前深度学习领域中的前沿技术和模式而闻名,使其在科研和工业界均得到了广泛的应用。 首先,MXNet的核心...
项目介绍文件通常包含框架的总体设计、主要特点和使用场景,帮助新开发者快速熟悉项目。快速了解文档则提供了快速入门的教程,包括创建新项目、编写基本的CRUD操作、设置权限等,使开发者能迅速上手开发。 总结,...
首先,一个小型的Java学习项目可能会从最基础的结构开始,比如建立一个基本的项目框架。这通常包括创建项目的主目录结构,以及各个模块和类的文件结构。对于Java项目而言,这通常涉及到文件夹的组织,如源代码目录...
除此之外,框架还提供了51个Markdown文档,这些文档通常是项目的说明文件或开发者指南,包含了详细的项目介绍、使用说明、配置方法和相关API文档等内容,为开发者提供了便捷的学习和查阅途径。 在视觉元素方面,...
设计师通常会遵循“少即是多”的原则,通过合理的布局和色彩搭配来实现这一点。使用清晰的字体、对比色和适当的留白,可以增强可读性和视觉吸引力。同时,漂亮的界面并不单指美观,而是与品牌形象和用户需求相协调,...
本文所介绍的“基于Vue框架的驾驶舱界面设计源码”项目,是一个专门针对驾驶舱或监控中心信息展示需求而开发的系统。该项目的核心是采用Vue.js框架,一个轻量级且高效的前端框架,它允许开发者通过组件化的方式构建...
Motan框架的设计源码,特别适合那些希望深入理解RPC工作原理的开发者,以及那些计划在项目中实际应用高性能分布式服务的架构师。 Motan的设计理念深受Java生态的影响,特别是对Spring框架的整合,使得它能够与...