- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)