知识大全 关于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 &gt;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 &gt;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 &gt;sayHello()) >            <interceptor class= test HelloAOPInterceptor />            <advice aspect= test HelloAOPAdvice name= trace />        </bind>        <bind pointcut= field(private java lang String test HelloAOP &gt;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 &gt;sayHello()) >            <interceptor class= test HelloAOPInterceptor />            <advice aspect= test HelloAOPAdvice name= trace />        </bind>        <bind pointcut= field(private java lang String test HelloAOP &gt;message) >            <interceptor class= test HelloAOPInterceptor />            <interceptor class= test HelloAOPInterceptor />            <advice aspect= test HelloAOPAdvice name= trace />        </bind>    </aop> 

cha138/Article/program/Java/hx/201311/27198

相关参考