![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
跟我学Aspectj
zl3450341
随心而为
展开
-
跟我学aspectj之二 ----- 搭建开发环境
一、下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧。AJDT是一个eclipse插件,开发aspectj必装,他可以提供语法检查,以及编译。这里要说一点重要的知识:aspectj不能使用传统的JDK编译,他的编译器扩展自JDK。AJDT提供的编译功能,就为我们省了很多事,当然你也可以用命令行自己去编译(不过我从来没有这么做过)。原创 2012-06-18 17:07:15 · 21596 阅读 · 3 评论 -
跟我学aspectj之十三 ----- AspectJ其他功能介绍
Aspectj 还有很多功能,但是我觉得都不是很常用,所以不打算继续讲了,用兴趣的同学可以自己参考他的官方网站。这些功能主要是如下: 动态修改类的自节码: 给类增加field method ,让类继承多个类,实现更多接口等等 对范型的支持: 也就是说pointcut 支持范型 支持自动Wrap类,自动装箱和拆箱 支持枚举。原创 2012-06-18 17:14:45 · 4613 阅读 · 2 评论 -
跟我学aspectj之九----- advice
asepctj有5种类型的advicebefore( Formals ) after( Formals ) returning [ (Formal ) ] after( Formals ) throwing [ (Formal ) ] after( Formals ) Type around( Formals ) 关于 前四种不想做过多的解释。before已经原创 2012-06-18 17:12:02 · 6861 阅读 · 4 评论 -
跟我学aspectj之六 ----- 插曲
其实,写这样的文章不太好写, 因为都是牵一发而动全身。介绍pointcut,的时候必要涉及到语法,也会涉及advice,以及一些其他的语法。 所以,如果大家在看博客的过程中,如果有疑问,请留言,及时提出你的想法。我会选择性采纳,使大家,更好的理解和阅读。 刚才Google一把, 发现:跟我学aspectj系列还是有人写。~ 呵呵,不过比起spring,原创 2012-06-18 17:10:11 · 7395 阅读 · 4 评论 -
跟我学aspectj之五 ----- args带参数的pointcut
上一节,我们overview了一下pointcut的类型,怎么够多吧? 不夸张的说基本涵盖了Java程序的所有生命周期。这就以为着:我们可以控制到一个已经存在的Java程序的任何地方和环节。可能你还不太懂上一节的东西,或是懵懂。不要急,接下来,我会把常用的几个一一帮你介绍。但是本节,我们仍然要看基础语法。 为了演示,我们要修改我们的HelloWorld.java。修改后的代码如下:原创 2012-06-18 17:09:41 · 16917 阅读 · 3 评论 -
跟我学aspectj之四 ----- pointcut基础语法
一、aspect的定义 运行完HelloWorld以后,我们来看下aspect的基础语法:1、定义一个切面: 关键字aspect。 这定义Java类的语法类似。2、定义pointcut: [修饰符(public,protected.....)] pointcut poincut名字() : 表达式;3、定义advice: 通知类型() : pointcut名字()原创 2012-06-18 17:09:09 · 15613 阅读 · 2 评论 -
跟我学aspectj之八 -----控制流cfow,cfowbelow
一、序言 cflow我认为是aspectj中最难理解的一个概念,至少我是这么认为的。当初刚接触aspectj的时候,可谓是为之颠倒,不只大家是否有相同的感觉。但有一点不可否认的就是:他觉得是aspectj强大功能之一。 他可以做到Spring AOP无法做到的场景。二、控制流 什么叫控制流? 相信很多不理解cflow的同学跟我一样,刚开始也是卡在这里,那么本节,原创 2012-06-18 17:11:35 · 13952 阅读 · 4 评论 -
跟我学aspectj之十二 ----- 基于注解的Aspect
我们还可以用注解的方式来写asepctj. 但是需要加入aspectjweave.jar。用法还是一样,就不想多将了,给个demo吧。import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Po原创 2012-06-18 17:14:04 · 12580 阅读 · 2 评论 -
跟我学aspectj之十一 ----- target() this() within()的区别
keyword: target this within difference 区别 经过上面的一个阶段的学习,你可能已经知道了这3个关键字,而且多是用来做过滤的。你是否很迷茫:到底他们有什么区别??首先来搭建测试环境。有如下代码:package com.aspectj.demo.different;public interface Animal {原创 2012-06-18 17:13:28 · 13858 阅读 · 13 评论 -
跟我学aspectj之十 ----- Aspectj5支持Annotaion
自从JDK5.0加入了annotation以后,asepctj也提供对annotaion的支持,而且命名也模仿JDK,从1.4的版本改为5.0 也就是Aspectj5,或者称@Aspectj。其中最重要的一项就是pointcut 支持对Annotaion的选取了。 不管你做没做过设计,你肯定用过自定义的Annotation(如果有不会的同学请Google)。为什么要自原创 2012-06-18 17:12:45 · 6426 阅读 · 1 评论 -
跟我学aspectj之三 ----- Hello World
一、创建项目 我们将project命名为:aspectjDemo。然后我们新建2个package:com.aspectj.demo.aspect 和 com.aspectj.demo.test前者用来方apsect。后者用来放测试类。如果你仔细的话,你会发现Aspectj的项目上面有个AJ的标志。二、创建Aspect 首先我们创建HelloWorl原创 2012-06-18 17:07:59 · 15289 阅读 · 6 评论 -
跟我学aspectj之一 ----- 简介
一、为什么写这个系列的博客 Aspectj一个易用的、功能强大的aop编程语言。其官网地址是:http://www.eclipse.org/aspectj/,目前最新版本为:1.7.0 RC1。但关于他使用的中文资料少之又少,几乎没有比较完整的中文资料对其做介绍。笔者用Aspectj有段时间了,对其语法还是有些了解。故把自己的经验写出来与大家分享。学习过程主要是从官方网站学习,由于原创 2012-06-18 17:06:13 · 45028 阅读 · 11 评论 -
跟我学aspectj之七 ----- call,execution,within,withincode
本节开始,我们将详细介绍pointcut的语法一、call和execution 语法结构:execution([修饰符] 返回值类型 方法名(参数) [异常模式]) 蓝色表示可选部分。 例子:execution(public *.*(..)) 所有的public方法。execution(* hello(..)) 所有的hello()方法ex原创 2012-06-18 17:10:46 · 17289 阅读 · 1 评论 -
跟我学aspectj之十四----- AspectJ具体应用举例
除了我们开头说的aop的那写通用场景外,我个人还比较喜欢用的还有一个场景。 前提: 任何系统都有 用户、数据这2个主体。 往往用户的身份不同,看到的数据也不同,如果每条数据查询的sql,都手写一条where userId= xxx 肯定也很麻烦,而且一旦逻辑改动,修改起来更麻烦。这个时候Aspectj就可以用上了。(以下Demo.Dao层为Hibernate )原创 2012-06-18 17:15:31 · 7040 阅读 · 12 评论