一、书写增强有效代码

//切面注释
@Aspect
public class errorLogger {

private static Logger logger = Logger.getLogger(errorLogger.class);

// 设置切点注释
 @Pointcut("execution(* com.small.server.*.*(..))")
 // 切点
 public void pointcut() {
 }// 这样做更加简洁

// 前置增强注释
 @Before("pointcut()")
 // 一个参数而已
 public void errorBefore(JoinPoint jp) {
  logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
    + "方法,参数列表为:" + Arrays.toString(jp.getArgs()));
 }

// 异常抛出异常注释
 @AfterThrowing(pointcut = "pointcut()", throwing = "e")
 public void errorThrowing(JoinPoint jp, RuntimeException e) {
  logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
    + "方法,抛出异常" + e);
 }

// 后置增强注释
 @AfterReturning(pointcut = "pointcut()", returning = "result")
 public void errorAfterReturning(JoinPoint jp, Object result) {
  logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
    + "方法,返回值为:" + result);
 }

// 最终增强注释
 @After("pointcut()")
 public void errorAfter(JoinPoint jp) {
  logger.debug("调用" + jp.getTarget() + "的" + jp.getSignature().getName()
    + "方法结束");
 }

//环绕增强
 @Around("pointcut()")
 public Object around(ProceedingJoinPoint jp)throws Throwable{
  logger.debug("调用"+jp.getSignature().getName()+"方法,参数列表为:"+Arrays.toString(jp.getArgs()));
  try{
   Object result=jp.proceed();//获得返回值
   logger.debug("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,返回值为:"+result);
   return result;
  }catch(Throwable e){
   logger.debug("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,");
   throw e;
  }finally{
   logger.debug("调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法结束");
  }
 }

}

二、spring核心配置文件代码

<context:component-scan  base-package="com.small.logger"/>
 <bean class="com.small.logger.errorLogger"></bean>
 <aop:aspectj-autoproxy/>

spring-aop 的注释用法的更多相关文章

  1. 《Spring 5官方文档》 Spring AOP的经典用法

    原文链接 在本附录中,我们会讨论一些初级的Spring AOP接口,以及在Spring 1.2应用中所使用的AOP支持. 对于新的应用,我们推荐使用 Spring AOP 2.0来支持,在AOP章节有 ...

  2. Spring AOP切点表达式用法总结

    1. 简介        面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的.通过面向对象编程,不同的模 ...

  3. 转载:Spring AOP (上)

    工 作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习.第一:为了更充实自己,保 持进步状态.第二:为了提升技术,提高开发能力.第三 ...

  4. Spring AOP (上)

    工作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习.第一:为了更充实自己,保持进步状态.第二:为了提升技术,提高开发能力.第三:保 ...

  5. (转)spring aop

    工作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习.第一:为了更充实自己,保持进步状态.第二:为了提升技术,提高开发能力.第三:保 ...

  6. 1.Spring AOP (上)

    转自:https://blog.csdn.net/yusheng8711/article/details/21622773 Spring有两大核心,IOC和AOP.IOC在java web项目中无时无 ...

  7. Spring AOP 学习例子

    http://outofmemory.cn/code-snippet/3762/Spring-AOP-learn-example     工作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大 ...

  8. 详细解读 Spring AOP 面向切面编程(一)

    又是一个周末, 今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之. ...

  9. Java Spring AOP用法

    Java Spring AOP用法 Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制 ...

  10. spring AOP的用法

    AOP,面向切面编程,它能把与核心业务逻辑无关的散落在各处并且重复的代码给封装起来,降低了模块之间的耦合度,便于维护.具体的应用场景有:日志,权限和事务管理这些方面.可以通过一张图来理解下: Spri ...

随机推荐

  1. ant在windows及linux环境下安装

    ant下载 http://ant.apache.org/ https://ant.apache.org/bindownload.cgi 历史版本 ant在windows下安装 解压到D盘 新建系统变量 ...

  2. hdu 3480 Division(四边形不等式优化)

    Problem Description Little D is really interested in the theorem of sets recently. There’s a problem ...

  3. Python--Linux上安装Python

    Linux 上安装 Python 官网下载:https://www.python.org/downloads/ 本文安装包下载链接:https://pan.baidu.com/s/1uL2JyoY_g ...

  4. Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)

    题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...

  5. NOIp2018提高组 双栈排序

    这真是道神奇的题目: 原题链接 首先我们要证明以下的性质: 若原序列为\(\{a_n\}\),\(a_i\)和\(a_j\)不能同时放入一个栈中,当且仅当\(i<j,a_i<a_j\),且 ...

  6. 2017-12-19python全栈9期第四天第二节之列表的增删查改之正向排序和倒向排序和反转

    #!/user/bin/python# -*- coding:utf-8 -*-li = [3,5,6546,6,8,324,2,1,34,5,6,7]# li.sort() #正向# print(l ...

  7. Netty序章之BIO NIO AIO演变

    Netty序章之BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使用 ...

  8. MTD下的Nand驱动

    目录 MTD下的Nand驱动 引入 平台设备资源文件 关键数据结构 平台框架 s3c24xx_nand_probe nand_scan s3c2410_nand_add_partition add_m ...

  9. Cygwin添加到鼠标右键

    From:http://www.cnblogs.com/killerlegend/p/3960112.html 在cygwin中安装chere 管理员权限执行mintty,输入下列命令即可. cher ...

  10. 第十一节:Bundles压缩合并js和css及原理分析

    一. 简介 1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是M ...