
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
src:java代码(包含配置文件)、db:SQL脚本、doc:文档相关、produard:混淆相关代码、WebContent:前端代码(包含jar包)、build.properties:Ant项目构建配置文件、build.xml:Ant项目构建运行文件、README.md :项目说明文档、遵循原则:约定大于规范
混淆说明
是否混淆开关:build.properties文件 deploy.isObfuscate 属性(true:混淆,false:不混淆)
关于混淆建议:
因为构建是开启混淆比较慢,所以建议平时开发不开启混淆,提升开发速度。注意:上测试之前一定要混淆跑一遍。
混淆具体配置,参见:/proguard/#文件
通常,Controller层,Jre包以及自己引用的第三方jar包不混淆;Mybatis自动生成代码、过滤器代码、配置文件代码不混淆;
不混淆依据:通常导致混淆报错原因是混淆后类名和方法名改变,不赘述。与Spring的创建Bean和注入有关;
后端代码开发,文件结构约定
包名约定
业务模块:com.公司名.项目名.模块名
通用模块:com.公司名.项目名.common
项目Java配置模块:com.公司名.项目名.config(包含AOP日志/异常处理等)
Mybaits代码模块:com.公司名.项目名.mybatis
配置文件:config
说明:
这里没有按照“公司名.项目名”命名,按实际情况而定。
Mybatis自动生成
这里没有完全实现自动化。需要开发者自行配置:
- MybatisStartUp.java 文件对应的两个路径
- generatorConfig.xml 对应路径以及连接数据库相关配置参数,还有相关表的配置
建议:稍加一些代码即可实现自动化配置。
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中常见的一些包:
util包:以静态方法的形式被调用
component:以Spring组件的形式被调用,这里有以下几种组件:
http包:Http接口调用的组件
message包:平安消息云发送短信组件
AuditingFieldsHelper:审计字段插入更新组件
constant包:常量包
Controller包:Controller层需要的类
exception包:常用的异常定义
business包:该包是common中唯一业务相关的代码,是各个业务模块公用的业务代码。
关于对外接口
提供对外接口的时候需要一些验证,demo实例里是将验证过程封装,减少代码冗余,详细情况见代码即可。
通用文件建议
一般建议提取一下几个通用文件夹:
AjaxUtil.js:Ajax请求的封装。好处:便于请求响应的统一处理。(如:错误提示的统一风格显示,日志打印,页面跳转等等)
LogUtil.js:日志的封装。好处:所有日志代码的入口,提供是否打印日志开关。好处:一般开发测试的时候,打开打印日志,上生产则关闭。
cookieUtil.js:cookie工具类
sessionStorageUtil:sessionStorage和LocalStorage的封装,封装建议:双层Map封装。好处:存取以及清空时可按业务分类,避免遗漏处理。
pageSwitch.js:页面跳转代码统一入口。好处:逻辑更为清晰。
constants.js:常量定义。
responseCode.js:响应码的定义。(与后端响应配套出现)
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!