AspectJ是AOP领域的较早的实现。AspectJ是在java语言基础上进行扩充的一门语言,扩充了自定义的关键字;并提供了自己的编译器ajc;在本文和接下来的系列文章中,将会与大家共同学习AspectJ这么新的AOP语言。下面的一个例子,是学习AspectJ的典型例子。如果是第一次看到该段代码,可能看不懂,不过没关系;在接下来的系列文章中,我将和大家共同学习。

通常我们在记录日志时候,都是硬编码在我们的业务代码中,下面的一个方面提供了当在应用中发生异常的时候,可以自动的在方面记录日志;而不用在业务代码中硬编码。随着日志规则的变化或者需要增加或者删除日志记录的情况,我们可以通过方面来实现松耦合!

在例子的代码中,基本上都作了比较完整的注释,将不会在文档中对例子做过多的介绍。

/** */ /**
 * 
 */
package  com.liuxiang.aspectj;

import  org.apache.log4j.Logger;

/** */ /**
 * 
 * 日志记录和跟踪是 AOP 的经典学习练习。
 * 
 * 方面是对日志记录和跟踪的传统方法的重大改进。在某些情况下 编写方面来解决这些普通问题很简单。
 * 对于比较复杂的情况,则需要对象和方面之间的更多合作,这最好在稍后的学习阶段去尝试。
 * 跟踪方面可以帮助初学者了解不熟悉的程序部分如何工作,并在调试间歇出现的问题时获得更深的理解。
 * 
 * 每当程序从模型调用中返回一个异常时,该方面就记录错误。
 * 这种方法对于跟踪 “吞下” 异常(即,捕获异常却不处理)的代码中的异常也十分有用。
 * 
 * LogModelExceptions.aj
 * com.liuxiang.aspectj.a
 * Aspectj5Project
 * @author liuxiang mailto:juxtapose@163.com
 * 2007-7-22 上午10:15:27
 *
 */
public  aspect LogExceptions  ... {
    private Logger logger = Logger.getLogger("LogModelExceptions");
    /** *//**
     * 切入点:包com.liuxiang及子包中所有公共方法的调用
     */
    public pointcut recordlog():call(public * com.liuxiang..*(..));
    public pointcut recordlog1():call(public * com.liuxiang..*(..));
    /** *//**
     * 在切入点recordlog()中所有发生异常的地方,将会触发如下的after操作,记录日志
     */
    after() throwing(Exception e):recordlog()...{
        logger.error("Error in calling method", e);
    }
    
}

这个例子中用到了AspectJ的部分的关键字和名词:方面(Aspect)、切入点、连接点、通知等。将会在下篇文章中给大家一一介绍。

AspectJ 入门篇相关推荐

  1. Spring Boot(一)入门篇

    Spring Boot干货系列:(一)优雅的入门篇 前言 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术 ...

  2. Spring Boot (16)---优雅的入门篇

    Spring Boot (16)---优雅的入门篇 Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备. ...

  3. 微服务入门篇(二),万字长文带你实操作SpringCloudAlibaba微服务组件

    目录 SpringCloudAlibaba介绍 简介 为什么要学SpringCloudAlibaba 从Spring Cloud netflix 到 Spring Cloud Alibaba 功能组件 ...

  4. 女友问粉丝过万如何庆祝,我发万字长文《保姆级大数据入门篇》感恩粉丝们支持,学姐|学妹|学弟|小白看了就懂

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 粉丝破万了 新星计划申 ...

  5. Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:没有了 下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置 前言 V1.x版本终于到来了.本次 ...

  6. SQL注入漏洞全接触--入门篇

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  7. Symbian开发系列 - 入门篇

    要开始我的Symbian开发之旅了, 先收集一些相关资料,如Symbian概述, 开发平台搭建, 参考书籍与网络资源. [基础] 什么是Symbian 学习Symbian的基本概念  Symbian操 ...

  8. 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...

  9. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

最新文章

  1. Linux初学者的感受
  2. VHDL+Verilog良好的代码编写风格(转载)
  3. 实验三:xen环境下的第一个虚拟机的安装
  4. [Python][小知识][NO.3] Python 使用系统默认浏览器打开指定URL的网址
  5. 前端共享桌面_2020 前端学习路线总结,哎呦,不错哦!
  6. 前端学习(2933):vue中的循环语句
  7. 【CodeForces - 746E】Numbers Exchange(贪心构造)
  8. 动态规划算法 - 钢条切割问题
  9. lxml处理xml时的字符编码问题
  10. (摘)老司机也必须掌握的MySQL优化指南
  11. libiconv android编译,(OK) 编译libiconv-1.14(静态库)—CentOS 7— android-ndk
  12. 【经典策略系列】之 Dual Thrust 交易策略
  13. 详解K均值聚类算法(K-means Clustering)简易实例:从空调温度判别使用者
  14. 图的遍历:深度优先遍历(DFS)
  15. 手机抓包软件:charles安装及教程
  16. 微信小程序跳转公众号文章非web-view
  17. 【机器学习】1. 线性模型 - 普通最小二乘法
  18. 【机器学习基础】支持向量回归
  19. bat脚本获取cfg文件内的变量值
  20. 【答学员问】你们从培训机构毕业后都找到什么工作?

热门文章

  1. “啃米族”云米的扑朔自立路
  2. 其实最有可能的是阿隆索撞舒马赫
  3. 在NGUI的UILabel中使用动态字体与表情
  4. Linux下Oracle 11g 单实例静默安装
  5. 淘客漏洞群用的什么机器人_目前淘客返利机器人是不是很火,大家都是用什么返利机器人的?...
  6. 2023AIGC产业发展及应用白皮书.pdf(附下载链接)
  7. python电子邮件地址怎么写_Python脚本也可以用来发送电子邮件
  8. Linux下清理磁盘数据方法
  9. 猪八戒网获26亿融资 计划做全国最大在线电商平台
  10. 全球及中国地理信息产业应用建设发展及产值规模预测报告2021-2027