一、书写增强有效代码

//切面注释
@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. 使用@property

    @property装饰器就是负责把一个方法变成属性调用的,既能检查参数,又可以用类似属性这样简单的方式来访问类的变量 class Student(object): @property def scor ...

  2. 【CF1132F】Clear the String(动态规划)

    [CF1132F]Clear the String(动态规划) 题面 CF 题解 考虑区间\(dp\). 增量考虑,每次考虑最后一个字符和谁一起删去,然后直接转移就行了. #include<io ...

  3. mysql慢查询日志按天切割归纳

    问题描述: mysql开启慢查询功能,再正常不过,那么存在这样一种情况:慢查询写入的文件位置和文件名是指定好的,如果慢查询时间设定严苛,不出意外,记录慢查询的单个文件大小会日益增大,几十兆或者上百兆, ...

  4. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 构建目录环境和依赖)

    引言:在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建一   的基础上 继续进行项目搭建 该部分的主要目的是测通MyBatis 及Spring-dao ...

  5. 支持向量机(SVM)举例

    例(1) 无核(No kernel or linear kernel) 代码和数据集来自于https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes ...

  6. 存在多个 AJAX 任务

    实现的效果: 这两个Ajax任务可同时实现,也可单独实现. 标准的函数: var xmlhttp; function loadXMLDoc(url,ufunc){ if(window.XMLHttpR ...

  7. MySQL查看SQL语句执行效率

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好 ...

  8. deepin 下安装goland中文字体显示全是方块

    下载中文字体 apt-get install ttf-arphic-uming xfonts-intl-chinese 替换goland的汉化包,两个jar包.https://blog.csdn.ne ...

  9. Elasticsearch 6.4基本操作 - Java版

    1. Elasticsearch Java API有四类client连接方式 TransportClient RestClient Jest Spring Data Elasticsearch 其中T ...

  10. java poi 操作ppt

    java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...