java基于AspectJ(面向切面编程)编码示例分享
一、基本概念
AspectJ是一种面向切面程序设计的基于Java的实现。它向Java中加入了连接点(JoinPoint)这个新概念,其实它也只是现存的一个Java概念的名称而已。它向Java语言中加入少许新结构:切点(pointcut)、通知(Advice)、类型间声明(Inter-typedeclaration)和方面(Aspect)。切点和通知动态地影响程序流程,类型间声明则是静态的影响程序的类等级结构,而切面则是对所有这些新结构的封装。
基于切面、连接点、切点、通知的概念如下:
Aspect:Aspect声明类似于Java中的类声明,在Aspect中会包含着一些Pointcut以及相应的Advice。
Jointpoint:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它jointpoint。
Pointcut:表示一组jointpoint,这些jointpoint或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的Advice将要发生的地方。
Advice:Advice定义了在pointcut里面定义的程序点具体要做的操作,它通过before、after和around来区别是在每个jointpoint之前、之后还是代替执行的代码。
连接点是程序流中适当的一点。切点收集特定的连接点集合和在这些点中的值。一个通知是当一个连接点到达时执行的代码,这些都是AspectJ的动态部分。其实连接点就好比是程序中的一条一条的语句,而切点就是特定一条语句处设置的一个断点,它收集了断点处程序栈的信息,而通知就是在这个断点前后想要加入的程序代。AspectJ中也有许多不同种类的类型间声明,这就允许程序员修改程序的静态结构、名称、类的成员以及类之间的关系。AspectJ中的方面是横切关注点的模块单元。它们的行为与Java语言中的类很象,但是方面还封装了切点、通知以及类型间声明
二、如何基于AJDT:AspectJDevelopmentTools进行AOP程序的开发?
按照ajdt网站上的说明,在eclipse中安装ajdt插件http://www.eclipse.org/ajdt/
创建AspectJProject项目
进行代码开发(本文提供一个简单的示例)
三、简单示例:
packageaop.test;
publicinterfaceFigureElement{
publicvoidsetXY(intx,inty);
publicvoiddraw();
}
packageaop.test;
publicclassPointimplementsFigureElement{
publicintx;
privateinty;
publicintgetX(){
returnx;
}
publicStringsetX(intx){
System.out.println("设置x值:x="+x);
this.x=x;
return"返回值是x="+x;
}
publicintgetY(){
returny;
}
publicvoidsetY(inty){
this.y=y;
}
publicPoint(){
}
publicPoint(intx,inty){
this.x=x;
this.y=y;
}
@Override
publicvoidsetXY(intx,inty){
this.x=x;
this.y=y;
System.out.println("PointsetXY:x="+x+",y="+y);
}
@Override
publicvoiddraw(){
System.out.println("Pointdraw");
}
@Override
publicStringtoString(){
return"Point:x="+x+",y="+y;
}
}
相关文章
- java数组排序去重_JAVA数组去重排序
- java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]
- 说一下java的运行机制_Java运行机制是什么?「建议收藏」
- Java SE8 日期和时间API
- java并发编程(1):Java多线程-基本线程类-基础知识复习笔记
- 在java代码中用xslt处理xml文件详解编程语言
- 数据库解锁Java,优雅连接Oracle数据库(java使用oracle)
- 开启Java之门:访问MySQL数据库(java访问mysql数据库)
- 深入Java:利用API快速创建MySQL表(java创建mysql表)
- Linux下Java开发入门指南(linux下java开发)
- Java网站在Linux上的运行(java网站linux)
- Java程序构建基于Redis的缓存系统(java用redis)
- Linux调用Java实现编程快速开发(linux调用java)
- Java程序员如何优雅操作Redis(java操作redis)
- 基于Linux操作系统上实现 Java 编程(linux r java)
- Java编程在Linux上的应用(java编程 linux)
- MSSQL与Java的数据库连接实践(mssql连接java)
- 使用Java连接MySQL数据库的具体操作方法(java连接mysql代码)
- Linux与Java结合:开启全新的编程之旅(linux java())
- Java编程从Oracle中读取数据(java读取oracle)
- 数据库Java编程修改Oracle数据库的实践(java修改oracle)
- 编程Oracle数据库中实现Java编程的突破之道(oracle使用java)
- linux下执行java程序的sh脚本分享