前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot切面运用

springboot切面运用

作者头像
用户5166330
发布2019-04-16 15:00:22
1K0
发布2019-04-16 15:00:22
举报
文章被收录于专栏:帅哥哥写代码帅哥哥写代码

众所周知,spring听的最多的就是aop与ioc。所以切面是日常编程中运用相当频繁的东西。

我最开始写切面的时候,用的框架还是ssh。在xml配置文件中写了一堆东西。现在我自己也记不住怎么写了。

我感觉身为一个程序猿记忆很重要,因为这一行业你必须要学习很多东西,那就势必要记住很多东西。然而,我是善忘的。我记性差到昨天写的代码,今天去看可能都要想一哈当时为啥这里要用个if。所以,代码注释,于你于他人都很重要。所以,我写些常用的,基本的就是为了以后需要的时候不用再去翻代码亦或是问度娘。

下面,进入主题。

1.这是一个记录操作日志切面。代码如图一:

图一

首先要定义切入点,就是你要拦截的方法。xml配置与其大同小异,思想都是一样的,无外乎一个是xml,一个是注解。

定义切入点之后,就是定义这个切入点的执行时机即在拦截方法之前执行或之后执行或其他时候执行,以及执行时的具体要干的事。

到这里就可以说切面就算完成了,老实说确实比较简单。

异常的处理,切面只是一个辅助,所以这一异常必须内部消化,不能因为切面bug了,咱主体功能就不要了吧。平时工作中要分清主次,异常是否影响主体进程,这个是具体业务具体分析的。


下面再说一哈其他问题,从上面图一的代码可以看出,一个是正常的日志,一个是异常日志。虽然正常的日志里面有个判断,那是因为这个导入数据的拦截切面,正常导入有两种情况,一是完美导入进数据库,二是导入时数据校验未通过。所以正常导入存在了一个if。

这里主要要说的是@AfterThrowing注解的使用。我故意让程序抛出异常,发现虽然进入异常拦截切面,但是异常日志却并未存入数据库。经询问度娘得知是因为aop事务优先级。所以,为了正常记录异常日志,需要在切面上加上@order注解,值越小优先级越高。没有看代码的同学可以翻上去瞅瞅。

经过测试,只有将@order注解的值设为integter最大值时,异常日志记录才失效。所以切面随便怎么设值,都是可以记录异常日志的。

最后,我想通过设置order的方式去改变被拦截方法的优先级,发现没有成功。度娘也没问到答案。需要去手动设置被拦截方法优先级的场景应该比较少,遇到了再问。至此切面的简单运用记录完成。


觉得写的不错,点亮小星星呗。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.06.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档