时间:2021-05-19
AspectJ 是通过注解来描述切点与增强的。
1 开发环境要求
因为要使用注解,所以请确保使用的 Java5.0 及以上版本。
引入 AspectJ 相关类库:
2 编程方式
@Aspect//标识切面
这个切面只是一个普通的 POJO,只不过加了 @Aspect 注解。
@Before("execution(* rent(..))") 中的 @Before 表示增强类型是前置增强,它的内容是 @AspectJ 切点表达式,这里表示的是在目标类的 rent() 方法上织入增强, rent() 可以包含任意入参和任意的返回值。
带 @Aspect 的类,通过注解与代码,将切点、增强类型和增强的横切逻辑整合到了一起,是不是很方便呀O(∩_∩)O哈哈~
单元测试:
AspectJProxyFactory factory = new AspectJProxyFactory();//设置目标类factory.setTarget(new User());//添加切面类factory.addAspect(PreRentAspect.class);User proxy = factory.getProxy();String userId = "001";proxy.rent(userId);proxy.back(userId);输出结果:
--开始执行租赁动作--
User:租赁【充电宝】
User:归还【充电宝】
3 配置方式
单元测试:
ApplicationContext context = new ClassPathXmlApplicationContext(spring.xml");User user = (User) context.getBean("user");String userId = "001";user.rent(userId);user.back(userId);输出结果与编程方式完全相同。
也可以基于 Schema 的 aop 命名空间进行配置:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://.deniro.spring4.aspectj.PreRentAspect"/></beans>这样的配置更加简洁。其实在 <aop:aspectj-atuoproxy/> 内部已经采用了自动代理模式啦 O(∩_∩)O哈哈~
<aop:aspectj-atuoproxy/> 的 proxy-target-class 属性,默认为 false ,表示使用 JDK 动态代理技术织入增强;此值为 true 则表示使用 CGLib 动态代理技术织入增强 。 如果目标类没有声明接口,那么即使 proxy-target-class 设置为 false,也会自动使用 CGLib 动态代理织入增强的哟O(∩_∩)O哈哈~
基于 Java5.0+ 的项目,建议使用 AspectJ 来配置切点与增强,因为这样更简洁、也更直接。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文演示的是Spring中使用AspectJ注解和XML配置两种方式实现AOP下面是使用AspectJ注解实现AOP的JavaProject首先是位于class
Spring只支持XML方式而没有实现注解的方式(也叫AspectJ方式)的AOP,所以要使用@Aspect注解,只能引入AspectJ相关的jar包aopal
第一种:注解配置AOP注解配置AOP(使用AspectJ类库实现的),大致分为三步:1.使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointc
spring对AOP的实现提供了很好的支持。下面我们就使用Spring的注解来完成AOP做一个例子。首先,为了使用Spring的AOP注解功能,必须导入如下几个
目录一、基于XML配置的SpringAOP二、使用注解配置AOP三、AspectJ切点函数四、AspectJ通知注解五、零配置实现SpringIoC与AOPAO