1.概述
技术框架选型以工业化大规模软件开发为原则---主流的选型、适宜团队分工的架构,同时照顾轻量级快速开发的需求,Java版的约定大于配置的风格。
2.主要库栈
-
JDK
:JDK 5.0/6.0、 UTF-8.
-
IOC container
:Spring 2.5.
-
ORM
:Hibernate 3.3.
-
Web
:Struts 2.1、JSP 2.0、JQuery 1.3/Dojo Base 1.3.
-
Web Service
:基于Apache CXF 2.2的JAX-WS/JAXB 2.0规范.
-
Security
: Spring Security 2.0.
3.层次说明
3.1 entity - 领域模型层
使用Sql First的开发模式,先设计数据库,参考DBA的意见,考虑性能而不要太片面追求OO化的表结构。
然后纯手工编写entity与极少量的JPA annotation(约定大于配置), 也可以用hibernate-tools从数据库逆向生成后再作修改。
3.2 access - 资源访问层
资源访问层包括对数据库、JMS、外部的WebService等的访问。
每个领域对象对应一个DAO类,继承于通用的HibernateDao<T>,所有以该对象为查询主体的HQL语句统一定义于DAO类内。
注意只有在需要特定的,繁琐的Hibernate API使用时,才会在DAO类中增加新的函数,而不会为可直接使用find函数查询的普通HQL封装新的函数。
3.3 service - 业务逻辑层
Service层有两类对象,
一类是领域对象管理类(Entity Manager), 按领域对象划分,每个Manager类负责管理多个紧密关联的Entity的增删改查及其业务逻辑。
一类是业务服务类(Service),按业务划分,每个服务类可能会访问到多种领域对象。
用Spring的Transcation annotation定义事务。 对于Hibernate Lazy load的关联对象,在性能要求不高时可使用OpenSessionInView Filter,否则在Service层完成对象的初始化操作。
3.4 web - Web MVC层
MVC框架使用Struts2.1 这一老牌传统MVC框架 + Convention Plugin 实现零配置文件,每个Action实现一组页面操作。
View模板用JSP2.0 , 尽量使用纯html+JSP2.0 EL展示页面。
Javascript与Ajax使用JQuery或Dojo Base,视乎项目中的JS使用是否繁重.
3.5 ws - WebService接口
使用Java first的开发模式,通过JSR181 annotation标注Web Service接口,用JAXB-2.0 annotation标注Java-XML Mapping。
用DTO类实现Entity与外系统的解耦,用WSResult包裹返回结果与返回码,不使用Exception返回错误。
3.6 security - 安全控制
用户-角色-授权三层控制,使用Spring Security Filter 拦截URL,使用Spirng Security的taglib 拦截页面内容。
3.7 测试
dao层测试OR mapping与特别SQL,特别数据库操作,使用集成测试测试实际数据库,基于Spring的集成测试Context,使用DBUnit准备数据。
manager/service类测试业务逻辑, 可使用连接实际数据库也以使用MockObject屏蔽dao层。
功能测试使用selenium测试主要用户故事的主流程及Javascript的效果.
4.常见问题
4.1 什么时候使用基于接口编程 ?
基于接口编程、Fascade层等等抽象封装都是有开发和维护的代价的,是否使用归根结底还是看在团队人员的分工情况,在大家不得不依赖这几项技术来解决相互的接口、契约问题时,自然就用了。
4.2 Package是先分层还是先分模块
org.springside.模块A.web 还是 org.springside.web.模块A? 同上,还是看团队人员的分工情况。如果是每人从头到尾负责一个独立模块的可以先分模块,反之,按层进行分工并鼓励层内重用的,可以考虑先分层。
分享到:
相关推荐
最后,文章还简述了运行时注解和编译时注解技术的应用,如ButterKnife和Dagger。 综上所述,云宠APP的架构设计着重于组件化开发和基础库的构建,旨在提高开发效率和维护性,同时充分利用各种技术如网络库、数据存储...
【DSS开发设计简述】 决策支持系统(DSS)是一种关键的技术工具,旨在辅助决策者在复杂的商业环境中做出更好的决策。DSS的开发设计强调实用性,以满足决策过程的需求和决策者的特性。 **系统分析** DSS的系统分析...
10. **互联网架构**:简述互联网的层级结构,包括边缘网络和核心网络,以及ISP(Internet Service Provider)的角色。 11. **云计算与物联网**:讲解云计算的基本概念,如IaaS、PaaS、SaaS,以及物联网(IoT)的...
- **企业发展概况**:简述企业的发展历程,展示其在行业内的演变和成就。 - **企业技术与实力**:强调科技创新,展示企业的技术专利和硬实力,如研发投入、品牌影响力、产业链运营等。 - **企业产品与服务**:...
2. **项目经验**:列举3-5个具有代表性的项目,简述项目目标、所使用的技术栈、在项目中的角色以及取得的成果。例如,参与了一个基于微服务架构的电商平台开发,使用了Spring Cloud,实现了高并发和稳定性能。 3. *...
简述项目目标、实现的技术解决方案以及项目的成果,以体现你的问题解决能力和团队合作精神。 教育背景部分,如实填写你的学历、专业以及所获奖项或荣誉。如果你有相关的在线课程或认证(如AWS Certified Developer...
描述中再次强调了“框架完整学术风格”,这意味着这份PPT模板注重的是整体的组织架构和专业展示,适用于学生在毕业答辩时展示自己的研究成果。在答辩过程中,一份结构清晰、内容充实且设计得体的PPT可以帮助演讲者更...
- **架构风格**描述了一类系统的通用结构和行为特征; - **框架**是一种预先设计好的、用于构建应用程序的基础结构,通常包含了一组预先编写好的代码; - **设计模式**则是解决特定问题的一套通用方案。 4. **在...
以下是一些关于如何架构和精细设计企业培训PPT的知识点: 1. **内容结构与重点**: - 开场(10%):包括自我介绍和对演示文稿的目的与日程的简述,帮助建立与观众的联系。 - 现状描述(30%):清楚地阐述当前状况...
10. **组织架构**:描绘公司内部的管理结构和各部门职能,体现公司运营效率。 11. **项目成员**:列出参与项目的核心人员及其职责,体现团队实力。 12. **核心成员**:详细介绍关键领导者的背景和贡献,强化团队...
4. **项目经验**:突出项目经验时,不仅要列出项目名称、日期和使用的技术,还应简述项目的业务目标、你在项目中的角色以及取得的具体成果。这有助于雇主了解你的实际操作能力和解决问题的能力。 5. **教育背景**:...
7. **个人优势**:简述你的个人特质,如快速学习能力、团队合作精神、解决问题的能力等,这些都能帮助你在众多候选人中脱颖而出。 8. **参考与推荐**:如果有前任雇主或导师愿意为你提供推荐,可以在此部分列出。...
在这个部分,你可以简述你的产品或服务、市场定位、竞争优势以及预期的业务成果。 2. **产品/服务**:这部分详细介绍你的产品或服务,包括功能、特点、如何满足市场需求以及相对于竞品的优势。模版提供了多页空间,...
2. **简介或职业目标**:用一到两句话简述自己的职业定位和求职意向,例如“寻求一份Java开发职位,专注于分布式系统和微服务架构”。 3. **技能列表**:列出你的编程语言、框架、工具和技术专长。例如,Java、...
3. **RESTful API**:后端通常以REST(Representational State Transfer)风格设计API,允许前端通过HTTP协议获取和更新资源。这促进了前后端解耦,并支持跨平台访问。 4. **状态管理**:随着应用复杂性的增加,...
例如,在产品介绍部分,可以将1-3或2-2作为产品特性展示,2-4或3-1作为产品优势和市场定位,3-2则可用来解释产品的技术架构或工作原理。 在介绍IT产品时,使用流程图、原型截图或用户界面设计可以帮助观众更好地...
- 项目背景:简述项目的起源,为什么启动这个项目,以及它在当前市场环境中的定位。 - 项目目标:明确项目的主要目标,包括短期和长期目标。 - 商业模式:解释项目如何盈利,包括收入来源和成本结构。 - 团队介绍:...
制度文化层涉及企业的领导体制、组织架构和管理制度,是企业运行的规则基础。精神文化层则是企业文化的核心,包括企业精神、经营哲学、道德规范和价值观念,它对企业成员的行为和思想产生深远影响。 企业文化具有...
8. **个人特质**:简述你的职业态度、团队合作能力和解决问题的能力,如“自我驱动,善于团队协作,具有良好的问题解决技巧”。 9. **语言能力**:如果你的英语水平达到了能够流利沟通的程度,应注明(如CET-6、...
5. **技术实现**:概述技术架构,开发平台,编程语言,以及可能面临的挑战。 6. **时间表**:制定项目进度,包括各个阶段的开始和结束日期。 7. **预算**:估算开发成本,包括人力、硬件、软件和营销费用。 8. **...