Spring基础---AOP使用拓展
2017-11-17 15:37
309 查看
一、使用注解定义切面
1、定义切面2、在spring配置文件启用 aspectj 注解
<!-- 在头文件引入 aop xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd" --> <!-- 生成一个增强类的实例 --> <bean id="advice" class="advice.UserAdvice"></bean> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
3、使用注解定义其他 增强
//使用注解 配置异常抛出增强 参数是切入点,抛出的异常名 @AfterThrowing(pointcut="myPointCut()",throwing="e") //使用注解 配置最终增强 参数是切入点 @After(value="myPointCut()") //使用注解 配置AfterReturning增强 参数是切入点,返回结果变量名 @AfterReturning(pointcut="myPointCut()",returning="result") //使用注解 配置环绕增强 参数是切入点 @Around(value="myPointCut()") public Object around(ProceedingJoinPoint pjp) throws Throwable { logger.info("调用" + pjp.getTarget().getClass().getName() + "的" + pjp.getSignature().getName()+"方法入参:"+Arrays.toString(pjp.getArgs())); Object obj = null; try { // 让程序继续执行 // 此处的obj不接收对afterreturning没有影响 // 对程序中接受返回值有影响,所以要返回返回值 obj = pjp.proceed(); logger.debug(pjp.getTarget().getClass().getName() +"返回值是:" + obj); return obj; } catch (Throwable e) { logger.error(pjp.getTarget().getClass().getName() +"方法发生异常:"+e.getMessage()); throw e; } finally{ logger.info(pjp.getTarget().getClass().getName() +"方法结束"); } }
相关文章推荐
- SpringBoot基础教程2-1-6 日志规范-使用AOP统一处理Web日志
- spring boot 基础之使用AOP统一处理请求日志使用方法
- Spring基础---IoC使用拓展
- Spring基础知识和AOP使用注意
- 【spring aop切面】基础使用教程
- Spring 2.0 中使用AOP新特性中关于Poincur的定义规则
- 使用Spring的AOP进行缓存在遭遇Hibernate应用时的注意点
- 不要重复DAO!使用Hibernate 和Spring AOP 构建泛型类型安全的DAO
- 使用Spring进行面向切面编程(AOP)
- 使用Spring-Aop实现Hibernate事务管理
- spring 学习(1.2) 入门基础- AOP
- 使用Spring AOP 自动代理配置声明式事务
- ITCAST视频-Spring学习笔记(使用CGLIB实现AOP功能与AOP概念解释)
- Spring的AOP注释实例(aspect的使用)
- ITCAST视频-Spring学习笔记(使用Spring配置文件实现AOP)
- [原]spring学习笔记9.1-Spring对Aop的支持-AOP基础篇
- 使用Spring AOP 自动代理配置声明式事务
- Spring中使用AOP例子
- Spring的AOP使用xml配置
- 使用AOP,在spring中实现简单的性能测试