文档章节

AOP---操作日志记录整理

Curry_M
 Curry_M
发布于 2017/03/31 17:02
字数 421
阅读 30
收藏 0

接受的参数:ProceedingJoinPoint(可执行的连接点)
返回值:Object返回值 目标对象的执行结果
抛出Throwable异常。

AfterThrowing 抛出通知 
作用:目标代码出现异常,通知执行。记录异常日志、通知管理员(短信、邮件)
应用场景:处理异常(一般不可预知),记录日志

After 最终通知 
作用:不管目标方法是否发生异常,最终通知都会执行(类似于finally代码功能)
应用场景:释放资源 (关闭文件、 关闭数据库连接、 网络连接、 释放内存对象 )


五种通知小结: 
    只要掌握Around(环绕通知)通知类型,就可实现其他四种通知效果。
你可以在环绕通知的方法中编写如下代码:
    try {
        //前置通知
        Object result = proceedingJoinPoint.proceed();
        //后置通知
}catch(Exception){
    //抛出通知
}finally{
    //最终通知
}


/////////////////////////////////////////////////////////////////////////////////////
使用@Pointcut 定义切入点 
问题:如果直接在通知注解中写切入点表达式,会发生重复编写,后期不便于维护

在实际开发中,切入点都是单独定义维护的,如:
1.使用xml定义切入点<aop:pointcut>
2.使用注解单独定义切入点@Pointcut

语法要求:
   切点方法:private void 无参数方法,方法名为切点名
例如:
@Pointcut("execution(* com.pingan.insurance.roadassistant.service.serviceImpl.*.insert*(..))")  
public void insertServiceCall() { } 

使用切入点:
 @AfterReturning(value="insertServiceCall()", argNames="rtv", returning="rtv")  
 public void insertServiceCallCalls(JoinPoint joinPoint, Object rtv) throws Throwable{ 
    ...................

一个通知方法如何使用多个切入点表达式 :
如:对A类a方法和b方法进行拦截  可以用||进行连接
@Before(value="mypointcut1()|| mypointcut2()")
@Pointcut("execution(* com.pingan.insurance.roadassistant.service.serviceImpl.*.update*(..))||"
            + "execution(* com.pingan.insurance.roadassistant.service.serviceImpl.*.bind*(..))"
            + "||execution(* com.pingan.insurance.roadassistant.service.serviceImpl.*.reset*(..))")

© 著作权归作者所有

Curry_M
粉丝 1
博文 52
码字总数 50329
作品 0
浦东
程序员
私信 提问
Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录

目的: 需要对一些事物的操作进行日志记录,如果在service内进行记录,大量的代码重复,并且维护比较麻烦。所以采用AOP的方式对service进行拦截。使用自定义注解的目的则是判断是否需要记录日...

凯文加内特
2015/05/12
7.1K
2
spring AOP实现业务日志管理

我们知道,在一个系统中,业务操作日志对我们很重要。那么以往我们更多的时候是写个方法,然后哪个模块需要加入日志,就引入这个接口。但是这种其实冗余了很多代码。今天我简单给大家介绍下采...

吕兵阳
2016/05/21
1K
0
spring的IOC和AOP详细讲解

1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同 时,要是产生的...

思维80
2016/04/07
339
2
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
2018/07/22
62
0
WEB项目中如何记录操作日志比较好?

各位做web的程序猿们,你们在做项目的时候操作日志如何记录呢?大部分是说用AOP,但是用AOP有个问题,日志内容不详细,例如:我删除了一条记录,参数是ID=12,那么只能显示参数为ID,但是对于...

tianpeng91
2013/11/15
12.3K
11

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
14分钟前
3
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
16分钟前
2
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部