一、书写增强有效代码

//切面注释
@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. java并发编程实践——王宝令(极客时间)学习笔记

    1.并发 分工:如何高效地拆解任务并分配给线程 同步:线程之间如何协作 互斥:保证同一时刻只允许一个线程访问共享资源 Fork/Join 框架就是一种分工模式,CountDownLatch 就是一种典 ...

  2. [curl]convert curl to python Ruby

    https://curl.trillworks.com/

  3. Tomcat 日志文件分割

    新到公司, 拿到了前辈们留下的 程序 “病历书” , 上面记载了项目上的一些 经常会犯的毛病,  还有相应的解决方法. 其中有的是因为后台 代码逻辑上的一些原因 , N手代码通病了吧 (这个还是以后再 ...

  4. JS学习笔记Day14

    一.正则表达式 (一)正则的概念 1.正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符 (二)创建正则的方式 1.字面量的 ...

  5. Linux下安装部署Samba共享盘的操作手册

    简述 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的 ...

  6. 第五节:从源码的角度理解各种Result(ActionResult、JsonResult、JavaScriptResult等)

    一. 背景 提到MVC不得不说MVC中的各种Result,这些高度封装的xxxResult以及在xxxResult再度封装的xxx,大大提高了MVC框架的开发效率. 相信做过MVC开发的朋友都会用到过 ...

  7. SQL Server数据库读写分离提高并发性

    在一些大型的网站或者应用中,单台的SQL Server 服务器可能难以支撑非常大的访问压力.很多人在这时候,第一个想到的就是一个解决性能问题的利器——负载均衡.遗憾的是,SQL Server 的所有版 ...

  8. LATEX简易教程

    1.LaTeX软件的安装和使用方法A(自助):在MikTeX的官网下载免费的MikTeX编译包并安装.下载WinEdt(收费)或TexMaker(免费)等编辑界面软件并安装.方法B(打包):在ctex ...

  9. 部署自己的服务器ubuntu

    一直都是在公司的服务器上工作,想搞点自己的idea比较不方便,所以近期租了要给自己的阿里云服务器. 以下为必要的软件的安装流程: jdk+jre: 1.去官网下载 jdk-linux版本: 2.解压压 ...

  10. Git上传文件容量大小限制

    使用Git LFS突破git的100M容量限制. 1.安装Git LFS https://git-lfs.github.com./ 2.安装后把里面的git-lfs.exe放到你要上传的项目文件夹 3 ...