Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7569592 建立时间:2006年5月29日 |

| |
[AOP]关于AspectJ 中的pointcut 语法 软件技术
lhwork 发表于 2006/10/18 9:57:59 |
这两天忙着看AspectJ in Action 为了补一下AOP知识。看了Spring 2.0的规范,其中AOP部分已经基本融合了AspectJ,看来有必要看一看AspectJ了。 看了很多AOP的文章了,AOP这两年发展的很慢,没有什么新意,现在到处都是SOA,SCA了,不过研究了一下,觉得还是很有帮助的。尤其是增加系统的契约性和模块的独立性来说,很有帮助。 当然,学东西,基础很重要。下面就说说AspectJ中的基本语法,有兴趣的可以看看AspectJ in Action。 先来说说pointcut,从字面的意思说的是切面的意思。也就是横切的时候,会有哪些执行点会被识别。只有先识别了,才能执行相应的Advice。 基本的定义如下: public pointcut accountOpera |
|
[AOP]使用 AOP 来维护遗留 Java 应用程序 软件技术
lhwork 发表于 2006/9/25 14:31:04 |
如果您曾经接管并且必须维护某个基于 Java 的应用程序,那么本文就是为您准备的。作者 Abhijit
Belapurkar 将向您展示如何使用面向方面编程(aspect-oriented
programming,AOP)来对即使最不透明的遗留应用程序获得前所未有的见解。
软件系统通常从一
组有限的得到良好理解的需求开始。然而,随着大多数成功系统的演进,它们承担起越来越多的需求,体现在无数的功能和非功能性方面。在一个企业环境中,您最
终很容易向这个混乱的模块组合添加许多第 |
|
[AOP]横切关注点的两种实现方法 软件技术
lhwork 发表于 2006/9/25 14:29:09 |
软件系统,可看作由一组关注点组成。其中,直接的业务关注点,是直切关注点。而为直切关注点提供服务的,就是横切关注点。有两种方法可以提供横切关注点,一种是传统的OOP方法,提供一个与直切关注点的实现一样的类来提供服务。另一种是最新的AOP方法,提供一个 |
|
[AOP][转]AOP及其Java实现机制 软件技术
lhwork 发表于 2006/9/25 14:27:36 |
1引言 传统的编程技术,采用分解的方式将一个软件系统划分为相对较小的、易于分析、理解的模块,如果这些模块仍难以分析、理解,则迭代的将其分解
为更小的模块,直到这些模块可以容易的分析、理解、设计与编码。通过对这些模块进行分析,设计,然后使用相应的编程语言实现这些模块,再以编程语言所定义
的方式将这些模块组装起来,形成最终的软件系统。例如,面向过程编程中,将系统分解为完成单一功能的函数,并通过函数之间的调用完成复杂的功能,最终形成
这个系统。面向对象编程中,通过分析,抽象出一系列具有一定属性与行为的对象,并通过这些对象之间的协作完成系统的功能。 传统的编程技术倾向于按
照功能或行为对软件系统进行分割,这个分割的结果是实现某一功能的模块,如函数、过程、类等。但在编程实践中,人们认识到,软件系统中有些行为无法封装在
单个的模块中,例如日志记录、事物处理、对上下文敏感的错误处理、性能优化等等。通常这些功能与行为不实现系统的业务功能,但辅助这些功能的实现,并散布
在实现系统功能的诸多模块中,从而造成代码的纠结,这使得实现系统功能的模块的代码难于阅读、理解、调试、维护和 |
|
[AOP]AspectJ学习笔记(三) 软件技术
lhwork 发表于 2006/9/25 14:26:36 |
AspectJ主要有三个地方: JIONPOINT POINTCUT ADVICE下面就从POINTCUT 的指示符和有关的上下文关系,反射开始:thisJoinPoint.getSignature():thisJoi,nPoint是ASPECTJ上下文定义的的一个类:可以访问切口环境,输出的结果是连接点的方法签名,比如(String Test.getName()) pointcut uniqueLog(String s) : call(public void helloWorldUnique(String)) && args(s); before(String s) : uniqueLog(s) { System.out.println("Passed value = " + s);}:可以访问主JAVA文件中方法的参数,4个地方的变量必须一致下面几个关于访问上下文环境的import org.aspectj.lang.*; import org. |
|
[AOP]AspectJ学习笔记(二) 软件技术
lhwork 发表于 2006/9/25 14:26:16 |
前面讲过一个关于AspectJ的例子,其实不用这么麻烦,现在可以在他的官方网站下载最新的JAR包,直接安装就可以了,安装完成以后有两个地方海上是需要设置一下1.PATH里面加上${AspectJ HOME}\BIN2.CLASSPATH里面加上${AspectJ HOME}\LIB这样环境就OK了,很简单把!下面就实现一个经典的HELLO WORLD!例子:class Test { public void helloWorld() { System.out.println("Hello World"); } public static void main(String args[]) { Test test = new Test(); test.helloWorld(); } }这个是个纯J |
|
[AOP]AspectJ学习笔记[01] 软件技术
lhwork 发表于 2006/9/25 14:25:16 |
动态横切(Dynamic Crosscutting) 动态横切指的是在一个程序的执行时插入一段新的行为。在AspectJ中发生的横切大都是动态的。 静态横切(Static Crosscutting)静态横切指的是对程序的静态结构进行修正的行为——如系统的类、接口、方面等。它不能更改系统的执行动作。 |
|
|