【java】通过spring通过AOP实现日志打印(二).pdfVIP

【java】通过spring通过AOP实现日志打印(二).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【java】通过spring通过AOP实现日志打印(二)--第1页 【java】通过spring通过AOP实现⽇志打印(⼆) 本⼈菜鸡⼀个,上⼀篇⽂章说了说⾃⼰对 AOP的理解,并留下了⼀个⽤ spring注解实现AOP 坑,本⽂就来填填这个坑 该系列暂时有两篇⽂章: 背景: 上⼀篇⽂章写了java中aop的思想,其实就是为了让某个⽅法运⾏的时候,(不⽤写多余的代码,就能)附带打印⽇志的功能,所以从另⼀ 种⾓度来说,这也是⼀种⽅法增强的效果,我们编写好了functionA⽅法,⾃动(增强)增加了该⽅法打印⽇志的功能。 当我们通过java编写web项⽬的时候,基本上都是⽤的spring的框架吧,所以本⽂来看看如何在spring通过注解的⽅式实现(AOP)⽅法 增强。 正⽂: 1、我们要在什么时候增强⽅法(寻找切点)? 2、我们要增强⽅法的什么(增强advice)? 3、确认编写代码(切点+增强的代码=切⾯!) 4、简单的模型: 假设我们现在需要编写⼀个所有的controller都中的⽅法都增强的切⾯我们需要做的是? 代码实现: 【java】通过spring通过AOP实现日志打印(二)--第1页 【java】通过spring通过AOP实现日志打印(二)--第2页 @Aspect @Component public class LogAspect { public LogAspect() { } //定义切点:所有拥有@RestController 该注解的类⾥的⽅法都会被增强 @Pointcut(@within(org.springframework.web.bind.annotation.RestController)) public void logPointCut() { } /** * 使⽤Around 来增强⽅法,记录系统⽇志 * * @param point * @return * @throws Throwable */ @Around(logPointCut()) public Object around(ProceedingJoinPoint point) throws Throwable { long beginTime = System.currentTimeMillis(); // 执⾏原有⽅法 Object res = ceed(); // 执⾏时长(毫秒) long time = System.currentTimeMillis() - beginTime; //打印⽇志 System.out.println( 打印⽇志) return res; } } 5、在模型上增加⼀些功能: 1、⽐如增加⼀个logService,然后把相关的⽇志保存到数据库,以便后续的分析! 2、那既然有了logService,就需要logMapper来实现数据库交互 3、我们总不能实时的往数据库插⼊⽇志吧,这样不管⽤户在你的⽹页中做什么操作都会插数据,很⼤程度上会影响数据库的性能,因此我 们需要⼀个list来存放⽇志,并且定时插⼊数据。 所以如图: 【java】通过spring通过AOP实现日志打印(二)--第2页 【java】通过spring通过AOP实现日志打印(二)--第3页 所以切⾯类基本代码和上⾯那段⼀样,只是新增了紫⾊的部分的代码,橙⾊框中的代码,我想作为⼀个java程序员,应该得会写的把,不就 是Mybatis框架中往数据库中增加数据嘛,把list⾥的数据批量插⼊数据库,应该也没问题吧,因此这⾥就只剩下,中间的紫⾊的Service如 何编写。 @Service public class LogService { @Resource private LogMapper logMapper; //构造⼀个定时器 private ScheduledExecutorService executorService; //创建⼀个线程安全的list,来存放⽇志对象

文档评论(0)

. + 关注
官方认证
文档贡献者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体社旗县清显文具店
IP属地江苏
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档