通⽤WEB项⽬DEMO说明⽂档
通⽤WEB项⽬DEMO说明⽂档
通⽤WEB项⽬DEMO说明⽂档
项⽬结构说明
src:java代码(包含配置⽂件)
db:SQL脚本
doc:⽂档相关
produard:混淆相关代码
jquery在项目里是干啥的
WebContent:前端代码(包含jar包)
build.properties:Ant项⽬构建配置⽂件
README.md :项⽬说明⽂档
遵循原则:约定⼤于规范
混淆说明
是否混淆开关:build.properties⽂件 deploy.isObfuscate 属性(true:混淆,false:不混淆)
关于混淆建议:
因为构建是开启混淆⽐较慢,所以建议平时开发不开启混淆,提升开发速度。注意:上测试之前⼀定要混淆跑⼀遍。
混淆具体配置,参见:/proguard/***.pro⽂件
通常,Controller层,Jre包以及⾃⼰引⽤的第三⽅jar包不混淆;Mybatis⾃动⽣成代码、过滤器代码、配置⽂件代码不混淆;
不混淆依据:通常导致混淆报错原因是混淆后类名和⽅法名改变,不赘述。与Spring的创建Bean和注⼊有关;
后端代码开发
⽂件结构约定
包名约定
业务模块:com.公司名.项⽬名.模块名
通⽤模块:com.公司名.项⽬名mon
项⽬Java配置模块:com.公司名.项⽬名.config(包含AOP⽇志/异常处理等)
Mybaits代码模块:com.公司名.项⽬名.mybatis
配置⽂件:config
说明:
这⾥没有按照“公司名.项⽬名”命名,按实际情况⽽定。
⽰例:
Mybatis⾃动⽣成
这⾥没有完全实现⾃动化。需要开发者⾃⾏配置:
- MybatisStartUp.java ⽂件对应的两个路径
- l 对应路径以及连接数据库相关配置参数,还有相关表的配置
建议:稍加⼀些代码即可实现⾃动化配置。
properties⽂件参数引⼊
Spring提供的引⼊⽅式为:@Value("${}")
所有通常开发者会在⽤到的时候直接引⼊。缺点:⼀个配置可能引⼊多次,当配置⽂件修改需要修改多处,维护困难。
建议封装为对象。实例参见:PropertiesConfig.java
同时引⽤多个参数时可封装为⽅法返回对象或者Map。
AOP处理
这⾥AOP处理主要两⽅⾯:
⽇志打印(这⾥仅仅做⽇志打印辅助,不能完全代替⼿动打印⽇志)
异常处理
⽇志打印
后端⼀般分为三层:Controller、Service、Dao
⼀般建议AOP拦截Controller层,打印⼊参出参。
指定⽅法或参数不打印
在默写情况我们不想打印某些参数,但是⼜被AOP拦截了。这时建议提供不打印⽇志注解。参考代码:实例代码NonAopLog.java类及其相关实现。
关于⽇志的⼀些建议:我觉得⽇志的作⽤是记录项⽬运⾏的状态,为了让运维⼈员更好的去了解正在运⾏的项⽬。但是这并不意味着⽇志越多越好,缺点不赘述。⼀般AOP⽇志基本上记录了⼀个业务处理的⼊参出参,简单的增删改基本上就没有必要再打印⽇志了,在业务逻辑稍微复杂⼀些,出现逻辑
分⽀的时候,这⾥最好是打印⽇志。⽽我们在定义接⼝时接⼝的功能尽量单⼀,不要⼀个接⼝把所有的事都做完,难以维护。所以⼀般情况,逻辑不会太复杂,⽇志也不⽤打印太多。还有⼀点是,异常⽇志交给异常处理就⾏,如何理解,参见下⼀节。
异常处理
Java⾥将Exception异常分为两种:受检异常和不受检异常。额,如何深⼊理解,看书去。在这⾥作为⼀个开发⼈员,我将异常分为以下⼏类:
系统异常 - SystemException(⽐如:系统参数错误,⾮正常业务逻辑错误等)
业务异常 - BusinessException(⽐如:⽤户名不对,密码错误等)
参数校验异常 - CheckException(⽐如:字段不能为空等)
相关代码参见:config包代码
这⾥只要是使⽤try catch处理不能使业务流程正常的异常⼀律往上⼀层抛,直到Controller层,到AOP拦截,统⼀处理,打印异常参数,栈信息,并返回前端对应的信息。
当我们碰到像IOException这种受检异常时,如果不能使业务正常话,封装为BusinessException跑向上⼀层。
common包代码
实例:
common包代码⼀般建议开发⼈员不要改动,这⾥是经过验证的通⽤的且和业务⽆关的代码,新项⽬可以直接拷贝使⽤。⼀般开发⼈员的通⽤代码,可以放⼊业务代码的common包中,如该代码经过评审,⽅可移⼊。
Common中常见的⼀些包:
util包:以静态⽅法的形式被调⽤
component:以Spring组件的形式被调⽤,这⾥有以下⼏种组件:
http包:Http接⼝调⽤的组件
message包:平安消息云组件
AuditingFieldsHelper:审计字段插⼊更新组件
constant包:常量包
Controller包:Controller层需要的类
exception包:常⽤的异常定义
business包:该包是common中唯⼀业务相关的代码,是各个业务模块公⽤的业务代码。
关于对外接⼝
提供对外接⼝的时候需要⼀些验证,demo实例⾥是将验证过程封装,减少代码冗余,详细情况见代码即可。
以为有验证,所以Postman测试⾏不通,所以模拟验证⽅法写了测试类,具体情况见代码。
前端代码开发
⽂件结构约定
⽂件夹约定
引⽤⽂件:assets(如:jquery,bootstrap等)
css/html/images/js:按业务模块区分,如有公共部分,则提取出对应的common⽂件夹
通⽤⽂件建议
⼀般建议提取⼀下⼏个通⽤⽂件夹:
AjaxUtil.js:Ajax请求的封装。好处:便于请求响应的统⼀处理。(如:错误提⽰的统⼀风格显⽰,⽇志打印,页⾯跳转等等)LogUtil.js:⽇志的封装。好处:所有⽇志代码的⼊⼝,提供是否打印⽇志开关。好处:⼀般开发测试的时候,打开打印⽇志,上⽣产则关闭。
cookieUtil.js:cookie⼯具类
sessionStorageUtil:sessionStorage和LocalStorage的封装,封装建议:双层Map封装。好处:存取以及清空时可按业务分类,避免遗漏处理。
pageSwitch.js:页⾯跳转代码统⼀⼊⼝。好处:逻辑更为清晰。
constants.js:常量定义。
responseCode.js:响应码的定义。(与后端响应配套出现)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。