时间:2021-05-19
@AspectJ可以使用切点函数定义切点,我们还可以使用逻辑运算符对切点进行复核运算得到复合的切点,为了在切面中重用切点,我们还可以对切点进行命名,以便在其他的地方引用定义过的切点。
当一个连接点匹配多个切点时,需要考虑织入顺序的问题,此外一个重要的问题是如何再增强中访问连接点上下文的信息。
Waiter接口:
package com.yyq.aspectJAdvanced;public interface Waiter { void greetTo(String name); void serveTo(String name);}NaiveWaiter实现类:
package com.yyq.aspectJAdvanced;public class NaiveWaiter implements Waiter { @Override public void greetTo(String name) { System.out.println("NaiveWaiter:greet to " + name + "..."); } @Override public void serveTo(String name) { System.out.println("NaiveWaiter:serving to " + name + "..."); } public void smile(String clientName,int times){ System.out.println("NaiveWaiter:smile to "+clientName+ times+"times..."); }}NaughtyWaiter实现类:
package com.yyq.aspectJAdvanced;public class NaughtyWaiter implements Waiter { public void greetTo(String clientName) { System.out.println("NaughtyWaiter:greet to " + clientName + "..."); } public void serveTo(String clientName) { System.out.println("NaughtyWaiter:serving " + clientName + "..."); } public void joke(String clientName, int times) { System.out.println("NaughtyWaiter:play " + times + " jokes to " + clientName + "..."); }}Seller接口:
package com.yyq.aspectJAdvanced;public interface Seller { int sell(String goods, String clientName);}SmallSeller实现类:
package com.yyq.aspectJAdvanced;public class SmartSeller implements Seller { public int sell(String goods,String clientName) { System.out.println("SmartSeller: sell "+goods +" to "+clientName+"..."); return 100; } public void checkBill(int billId){ if(billId == 1) throw new IllegalArgumentException("iae Exception"); else throw new RuntimeException("re Exception"); }}beans.xml配置文件:
<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://\\yyq\\aspectJAdvanced\\beans.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(configPath); SmartSeller seller = (SmartSeller) ctx.getBean("seller"); seller.checkBill(1); }输出结果:
---bindException---exception:iae Exception---bindException---以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文演示的是Spring中使用AspectJ注解和XML配置两种方式实现AOP下面是使用AspectJ注解实现AOP的JavaProject首先是位于class
Spring只支持XML方式而没有实现注解的方式(也叫AspectJ方式)的AOP,所以要使用@Aspect注解,只能引入AspectJ相关的jar包aopal
目录一、基于XML配置的SpringAOP二、使用注解配置AOP三、AspectJ切点函数四、AspectJ通知注解五、零配置实现SpringIoC与AOPAO
spring对AOP的实现提供了很好的支持。下面我们就使用Spring的注解来完成AOP做一个例子。首先,为了使用Spring的AOP注解功能,必须导入如下几个
第一种:注解配置AOP注解配置AOP(使用AspectJ类库实现的),大致分为三步:1.使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointc