业务层面的AOP方法必须打印日志,标明类以及方法

原因:AOP带来方便性的时候,同样造成了代码的碎片化,多个AOP之间相互影响导致异常或者错误是非常难追溯的,因此在开发的过程中AOP方法必须打印日志标明程序所执行的方法。

Service层所有public方法必须通过我注入自身方式调用

原因:项目采用cglib实现的AOP,如果使用this的方式调用类中方法将不会触发AOP逻辑,可能会给业务带来不可预知的影响。

所有第三方调用入口方案必须打印日志,记录入参、返回以及执行时间

原因:第三方调用往往是性能问题或者bug的高发区,通过完善的日志记录可以准确定位性能与业务问题,方便后续错误排查。

数据库事务的新增/修改操作时, 如果涉及到锁,则必须按照同样的顺序进行加锁操作。获取锁的顺序必须优先底层服务,再高层服务。

原因:如果不限制相同的加锁顺序,有可能会造成线程死锁;由于底层服务通常被多个高层服务依赖,调用的频率也越高,优先加锁可以预防链接持有一堆高层锁并等待底层锁的情况发生。