后台规范
<p>1、controller表单校验--统一用spring validation
2、数据库ID生成规则,框架统一提供接口,为支持多商户,表ID需要根据商户ID来生成
3、swagger-ui上集成token授权,方便测试接口,暂时用postman
4、domain entity 统一用lombok,省掉getter/setter,IDE需要安装下lombok插件
5、函数的参数,通用的save,update可以用bo,业务类型的函数用基本类型的参数</p>
<pre><code class="language-java"> /**
* 支付订单
* @param orderId 订单号
* @param userId 用户ID
*/
@Transactional
public void pay(int orderId, long userId) {
}
</code></pre>
<p>6、规范微服务各服务标识、业务编码,便于异常记录elk,做异常排查</p>
<p>7、domain分do,dto,vo</p>
<p>8、服务器端口分配混乱,对前后端的端口进行规划</p>
<p>9、事务后发送消息
事务中发送,消费方处理消息时,事务方可能还没提交</p>
<p>@Transactional(readOnly = false,propagation=Propagation.REQUIRED)//开事物
public void save(String name,Integer age ,BigDecimal amount){
Zexample1Model zexample1Model = new Zexample1Model();
zexample1Model.setName(name+"_");
zexample1Model.setAge(age);
zexample1Model.setAmount(amount);
zexample1Model.setAddTime(new Date());
zexample1Model.setStatus(1);
zexample1Dao.save(zexample1Model);
System.out.println("id="+zexample1Model.getId());</p>
<pre><code>TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
System.out.println("send email after transaction commit...");
}
});
System.out.println("this method complete....");</code></pre>
<p>}</p>
<p>———————————————
微服务同步调用异常时,
以补偿调整为主
调用方尽量不要主动回滚抹除记录</p>
<p>10、gitlab 分支及提交合并管理
11、前端\后端 CI/CD
12、id 用Long, 不允许 Integer(值太小)
public class GoodsInfoDTO implements Serializable {
private static final long serialVersionUID = 1L;</p>
<pre><code>//id
private Integer id;</code></pre>
<p>13、参数必须是声明式的</p>
<p>如:@RequestBody Map<String, Object> map
这种内容不可知,必须改为对象类</p>
<p>14、PO BO DTO 必须带词缀
GoodsInfo =》GoodsInfoDTO</p>
<p>15、gitlab 必须保证源码的干净
必须有.gitignore,
只允许提交源码
不要ide的配置信息、编译结果</p>
<p>16、日志打印
必须使用logger
不允许使用
System.out.println</p>
<p>17、throw (e)前用
logger.error 打印异常</p>
<p>18、不允许在业务代码里有常量</p>
<p>19、mybatis ${} 有注入风险,用#{}</p>
<p>20、swagger文档,参数注释、接口注释都可以用中文的,方便前端对接人员确认</p>
<p>21、SQL语句,不要用关联查询,代码控制,多次查询</p>