一、书写增强有效代码

//切面注释
@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. 怎样在ISE14.7中固化FLASH文件

    前言 当工程开发完成后,bit文件类型掉电后会消失,而此时采用FLASH固化就很重要了. 软件版本:ISE14.7 流程 1.对生成FLASH文件进行设置:配置速率为33,选择66貌似配置失败,中庸之 ...

  2. 第六篇--Ubuntu画图软件

    有时图片需要经过处理,下载一个pinta软件 sudo apt-get install pinta 安装后可能不知道位置,没关系,点击图片右键,选择打开软件为pinta就行了.

  3. 微信小程序之 3d轮播(swiper来实现)

    以前写过一篇3d轮播,就是这篇,使用的方法比较笨拙,而且代码不简洁.这次发现swiper也能实现同样的效果.故记录一下. 先看看效果: wxml: <swiper previous-margin ...

  4. 金融量化分析【day110】:Pandas-DataFrame索引和切片

    一.实验文档准备 1.安装 tushare pip install tushare 2.启动ipython C:\Users\Administrator>ipython Python 3.7.0 ...

  5. 金融量化分析【day112】:量化平台的使用-初始化函数

    一.set_benchmark - 设置基准 1.实现代码 # 导入函数库 import jqdata #初始化函数,设定基准等等 def initialize(context): set_bench ...

  6. VUE-开发工具VSCode

    VUE-开发工具之VSCode VSCode是微软出的一款轻量级代码编辑器,免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全.Emme ...

  7. GIT-常规操作

    本地安装git, 安装文件: Git客户端: 可百度搜索:GIT64位或GIT32位等关键字找到相应的版本进行下载. 本地地址:D:\20-git\Git-2.20.1-64-bit.exe 也可百度 ...

  8. Python DB operation

    mysql http://www.cnblogs.com/zhangzhu/archive/2013/07/04/3172486.html 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目 ...

  9. 实现线程安全先进先出的dict

    # encoding:utf-8 from collections import OrderedDictfrom collections import MutableMappingfrom threa ...

  10. hibernate之SessionFactory对象

    Factory --- 工厂 利用Configuration得到 hibernate3.版本 SessionFactory factory = Configuration.buildSessionFa ...