当前位置:  编程技术>java/j2ee

java基于AspectJ(面向切面编程)编码示例分享

    来源: 互联网  发布时间:2014-11-02

    本文导语:  一、基本概念 AspectJ是一种面向切面程序设计的基于Java 的实现。它向 Java 中加入了连接点(Join Point)这个新概念,其实它也只是现存的一个 Java概念的名称而已。它向 Java 语言中加入少许新结构:切点(pointcut)、通知(Advice)、类...

一、基本概念

AspectJ是一种面向切面程序设计的基于Java 的实现。它向 Java 中加入了连接点(Join Point)这个新概念,其实它也只是现存的一个 Java概念的名称而已。它向 Java 语言中加入少许新结构:切点(pointcut)、通知(Advice)、类型间声明(Inter-type declaration)和方面(Aspect)。切点和通知动态地影响程序流程,类型间声明则是静态的影响程序的类等级结构,而切面则是对所有这些新结构的封装。

基于切面、连接点、切点、通知的概念如下:

Aspect: Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
Joint point:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
Pointcut:表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice:Advice 定义了在 pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
连接点是程序流中适当的一点。切点收集特定的连接点集合和在这些点中的值。一个通知是当一个连接点到达时执行的代码,这些都是 AspectJ的动态部分。其实连接点就好比是程序中的一条一条的语句,而切点就是特定一条语句处设置的一个断点,它收集了断点处程序栈的信息,而通知就是在这个断点前后想要加入的程序代。AspectJ 中也有许多不同种类的类型间声明, 这就允许程序员修改程序的静态结构、 名称、 类的成员以及类之间的关系。AspectJ 中的方面是横切关注点的模块单元。它们的行为与 Java语言中的类很象,但是方面还封装了切点、通知以及类型间声明

二、如何基于AJDT: AspectJ Development Tools进行AOP程序的开发?

按照ajdt网站上的说明,在eclipse中安装ajdt插件http://www.eclipse.org/ajdt/
创建AspectJ Project项目
进行代码开发(本文提供一个简单的示例)

三、简单示例:

代码如下:

package aop.test;

public interface FigureElement {
 public void setXY(int x,int y);
 public void draw();
}

代码如下:

package aop.test;

public class Point implements FigureElement {

 public int x;
 private int y;

 public int getX() {
  return x;
 }

 public String setX(int x) {
  System.out.println("设置x值:x="+x);
  this.x = x;
  return "返回值是x="+x;
 }

 public int getY() {
  return y;
 }

 public void setY(int y) {
  this.y = y;
 }

 public Point(){

 }

 public Point(int x,int y){
  this.x=x;
  this.y=y;
 }

 @Override
 public void setXY(int x,int y) {
  this.x=x;
  this.y=y;
  System.out.println("Point setXY: x="+x+",y="+y);
 }

 @Override
 public void draw() {
  System.out.println("Point draw");
 }

 @Override
 public String toString(){
  return "Point: x="+x+",y="+y;
 }
}


    
 
 

您可能感兴趣的文章:

  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程
  • java Servlet实现Session创建存取以及url重写代码示例
  • java 四舍五入使java保留2位小数示例讲解
  • java进行error捕获和处理示例(java异常捕获)
  • java去除集合中重复元素示例分享 java去除重复
  • java读取csv文件示例分享(java解析csv文件)
  • java求三个数的最大值的示例分享
  • java生成字母数字组合的随机数示例 java生成随机数
  • java实现网页解析示例
  • java协变返回类型使用示例
  • 使用java执行定时任务示例
  • 论坛 iis7站长之家
  • java向文件末尾添加内容示例分享
  • java正则表达式获取url的host示例
  • java使用正则表达校验手机号码示例(手机号码正则)
  • java实现jframe透明窗体示例
  • java的split方法使用示例
  • java抓取网页数据示例
  • Oracle 使用Java Source 简单示例
  • java自定义日期转化类示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.print类docflavor的类成员方法:默认编码和平台编码定义及介绍
  • 求救:JAVA 中汉字编码怎样变成 VC 下的汉字编码?
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路
  • 免费的Java地理编码库 JGeocoder
  • java自动根据文件内容的编码来读取避免乱码
  • 简洁实用的Java Base64编码加密异常处理类代码
  • Solaris下如何修改java虚拟机的默认编码
  • 运行java程序时出现 警告:编码 UTF8 的不可映射字符
  • java用的是unicode, c 用的哪种字符编码?
  • Java是否有能够将经过quoted-printable编码的字符序列转换为原文的函数?
  • 请问有谁有JAVA的编码规范
  • 求助:java中 xp和unix的编码问题
  • 再来讨论一下JAVA中的汉字编码问题
  • 献身java的编码员都是受虐待狂
  • 关于java编码规范
  • 请教:linux里取出mysql的数据为乱码,作了编码处理还是不行(java)
  • 请教 java 编码问题。
  • 在java里有关编码和解码的问题:比如对中文编码成BASE64或quoted-printable或者是其他的,应该用什么类什么方法?请赐教!!
  • java 中中文编码问题 是不是 与本地系统有关?
  • java按指定编码写入和读取文件内容的类分享
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3