知识大全 关于AOP的应用实例
Posted 文件
篇首语:书到用时方恨少,事非经过不知难。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于AOP的应用实例相关的知识,希望对你有一定的参考价值。
关于AOP的应用实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
开发环境:Eclipse +JBossIDE 一 AOP的拦截器应用 新建AOP工程 在新建向导中选择JBossAOP下的JBossAOP Project 输入项目名为:TestAOP Java Version为Java 结束向导 系统自动生成AOP配置文件jboss aop xml文件 内容如下: <?xml version= encoding= UTF standalone= yes ?> <aop/> 新建Java类 名为Test 勾选main方法 代码如下: package test;
publicclass HelloAOP
/** *@paramargs */ publicstaticvoid main(String[] args) // TODO自动生成方法存根 HelloAOP hello= new HelloAOP(); hello sayHello(); publicvoid sayHello() System out println( Hello ); 新建拦截器 名为HelloAOPInterceptor java 并实现Interceptor接口 代码如下: package test;
import jboss aop advice Interceptor; import jboss aop joinpoint Invocation;
publicclass HelloAOPInterceptor implements Interceptor
public String getName() // TODO自动生成方法存根 return test HelloAOPInterceptor ;
public Object invoke(Invocation arg ) throws Throwable // TODO自动生成方法存根 System out println( Hello AOP! ); return arg invokeNext();
将拦截器和要拦截的类用设置文件联系起来 在 包资源管理 视图下 右击类HelloAOP的sayHello方法 在弹出菜单中选择JBoss AOP >Apply Interceptor(s)… 在Select an Interceptor 面板选择test HelloAOPInterceptor拦截器类 系统自动更新jboss aop xml文件 代码为: <?xml version= encoding= UTF standalone= yes ?> <aop> <bind pointcut= execution(public void test HelloAOP >sayHello()) > <interceptor class= test HelloAOPInterceptor /> </bind> </aop> 右击HelloAOP类 在弹出菜单中选择 运行方式 > 运行… 在对话框中选择 JBoss AOP Application 新建配置项 单击 运行 按钮 控制台出现如下信息: Hello AOP! Hello 即拦截器在sayHello方法调用前被调用 二 AOP的Advice应用 新建Java类 名为:HelloAOPAspect java 代码如下: package test;
import jboss aop joinpoint Invocation;
publicclass HelloAOPAdvice
public Object trace(Invocation invocation) throws Throwable System out println( 进入程序运行点 ); try return invocation invokeNext(); finally // TODO: handle exception System out println( 离开程序运行点 ); 与HelloAOP文件联系起来 在 包资源管理 视图下 右击类HelloAOP的sayHello方法 在弹出菜单中选择JBoss AOP >Apply Advice… 在Apply Advice…面板勾选Object trace(Invocation invocation) 系统自动更新jboss aop xml文件 代码为: <?xml version= encoding= UTF standalone= yes ?> <aop> <aspect class= test HelloAOPAdvice scope= PER_VM /> <bind pointcut= execution(public void test HelloAOP >sayHello()) > <interceptor class= test HelloAOPInterceptor /> <advice aspect= test HelloAOPAdvice name= trace /> </bind> </aop>
利用刚新建的运行配置运行HelloAOP java文件 控制台出现如下信息: Hello AOP! 进入程序运行点 Hello 离开程序运行点 从此处可看到Advice在Interceptor之后介入 且方法sayHello()调用前后都起作用 三 AOP类中的域应用 修改HelloAOP代码 添加私有变量message 利用源代码菜单 实现其Getter/Setter方法 修改main方法 完整代码如下: package test;
publicclass HelloAOP
/** *@paramargs */ private String message= Wele ;
publicstaticvoid main(String[] args) // TODO自动生成方法存根 HelloAOP hello=new HelloAOP(); hello sayHello(); System out println(hello getMessage()); hello setMessage( Benson ); System out println(hello getMessage());
publicvoid sayHello() System out println( Hello );
public String getMessage() returnmessage;
publicvoid setMessage(String message) ssage = message;
在 包资源管理 视图下 右击类HelloAOP的域message 在弹出菜单中选择JBoss AOP >Apply Interceptor(s)… 在Select an Interceptor 面板选择test HelloAOPInterceptor拦截器类 系统自动更新jboss aop xml文件 文件内容为: <?xml version= encoding= UTF standalone= yes ?> <aop> <aspect class= test HelloAOPAdvice scope= PER_VM /> <bind pointcut= execution(public void test HelloAOP >sayHello()) > <interceptor class= test HelloAOPInterceptor /> <advice aspect= test HelloAOPAdvice name= trace /> </bind> <bind pointcut= field(private java lang String test HelloAOP >message) > <interceptor class= test HelloAOPInterceptor /> </bind> </aop> 利用刚新建的运行配置运行HelloAOP java文件 控制台出现如下信息: Hello AOP! Hello AOP! 进入程序运行点 Hello 离开程序运行点 Hello AOP! Wele Hello AOP! Hello AOP! Benson 当域message被访问时(调用get或set时) 都会调用拦截器 可以看得出拦截器在对象初始化时 对域message也起作用 利用相似的方法 可以给域message设置advice 在 包资源管理 视图下 右击类HelloAOP的域message 在弹出菜单中选择JBoss AOP >Apply Advice… 在Apply Advice…面板勾选Object trace(Invocation invocation) 系统自动更新jboss aop xml文件 代码为: <?xml version= encoding= UTF standalone= yes ?> <aop> <aspect class= test HelloAOPAdvice scope= PER_VM /> <bind pointcut= execution(public void test HelloAOP >sayHello()) > <interceptor class= test HelloAOPInterceptor /> <advice aspect= test HelloAOPAdvice name= trace /> </bind> <bind pointcut= field(private java lang String test HelloAOP >message) > <interceptor class= test HelloAOPInterceptor /> <interceptor class= test HelloAOPInterceptor /> <advice aspect= test HelloAOPAdvice name= trace /> </bind> </aop>
cha138/Article/program/Java/hx/201311/27198相关参考
在Delphi中应用AOP实现日志功能[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 通过
在Delphi中应用AOP实现日志功能[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! AO
SpringAOP实现原理与CGLIB应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 简
SpringAOP在DWR安全上的应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
AOP概念解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为什么要区分JEE容器和JEE应用
大型Javaweb应用往往有很大的系统访问量为了保护服务器免于出现过载的情况一般都需要对流量进行控制对于web页面的访问一般通过配置服务器或者apache可以起到保
关于webservice的异步调用简单实例无论在任何情况下被调用方的代码无论是被异步调用还是同步调用的情况下被调用方的代码都是一样的 下面我们就以异步调用一个webservice为例作说明这是一
知识大全 栈和队列 - 栈和队列的应用实例 - 队列的应用实例
队列的应用舞伴问题 问题叙述 假设在周末舞会上男士们和女士们进入舞厅时各自排成一队跳舞开始时依次从男队和女队的队头上各出一人配成舞伴 若两队初始人数不相同则较长的那一队中未配对者等待下一轮舞
知识大全 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(一)
栈和队列的应用非常之广只要问题满足后进先出和先进先出原则均可使用栈和队列作为其数据结构 栈的应用 数制转换 将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题很容易通过除B取余
知识大全 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(二)
栈与递归 ()递归 所谓递归是指若在一个函数过程或者数据结构定义的内部直接(或间接)出现定义本身的应用则称它们是递归的或 者是递归定义的 递归是一种强有力的数学工具它可使问题的描述和求解变