spring 处理复杂的业务操作日志

kellypipe 2018-03-11 11:24:29
需求:记录某些业务的操作日志:具体是需要记录业务操作过程中的一些数据:比如某个插入数据库记录的id ,本来想利用aop 来统一处理,但是aop 取不到方法内的一些数据比如 插入数据库后的id .请问还能通过什么方法来统一处理呢。不考虑在每个方法添加处理方法的。
...全文
345 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42501277 2019-11-04
  • 打赏
  • 举报
回复
可以通过useGeneratedKeys=true来获取自增id。 mapper @insert("insert into xxx value(xxx)") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int insertOne(@Param("model")Model model); service @MyAnnotation int insert(Model model) apect @after("@annotation(com.xxx.xxx.MyAnnotation)&&args(model)") void tocut(Model model){ int id = model.getId(); }
决决怪 2018-03-12
  • 打赏
  • 举报
回复
可以改用其他字段作为索引,执行效率会减弱一些。
maradona1984 2018-03-12
  • 打赏
  • 举报
回复
id不用数据库自增这种方式(插入时可确定id值),可以考虑利用数据源的过滤器,当然别的数据源是否存在这种功能我是不太清楚,这里数据源推荐用druid(换数据源成本较低),拿到sql和值可以做你想做的事情,但缺点是无法监控应用外的数据库操作,mybatis的拦截器也是能做到类似功能,但局限性比数据源更大 还有一种,利用canal(阿里的开源组件,用java模拟mysql的从库分析binlog,达到监控数据变化的功能),监控数据库所有操作,优点是啥都能拿到,缺点是只支持mysql,有一定学习曲线,编写足够稳定的服务也是难度之一

67,542

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧