AspectJ实现方式(注解方式)

使用AspectJ框架实现AOP(给一些已经存在的类和方法,增加额外的功能【前提是不改变原来类的代码】)

实现步骤

  1. 先创建一个maven工程

    加入spring依赖
    加入aspectj依赖

  2. 创建目标类:必须有接口和他的实现类(不懂AOP的相关术语可以查看上一篇)

//接口
public interface SomeService{
	void doSome();
}
//实现类
@Service   //创建对象并放到IOC容器里面,让spring管理
public class SomeServiceImpl implements SomeService{
	public void doSome(){
		System.out.println("doSome方法执行。");
	}

}
  1. 创建切面类【实则是个普通类】
    1)在类上面添加注解 @Aspect
    2)在类中定义方法,方法就是切面要执行的功能代码
    3)在方法的上面加入aspectj的通知注解,例如@Before
    4)指定切入点表达式,例如:execution(public void com.yixuexi.ba01.SomeServiceImpl.doSome(…))
@Aspect
public class MyAspect{
	@Before("execution(public void com.yixuexi.ba01.SomeServiceImpl.doSome(..))");
	public void aspectOne(){
		System.out.println("@Before切面方法执行");
	}
}

在这里插入图片描述

  1. 创建spring的配置文件,在文件中声明对象,把对象交给容器统一管理
    1)声明对象可以使用xml或者注解的方式都行()
    2)声明AspectJ框架中的自动代理生成器标签(自动代理生成器:完成代理对象自动创建功能)
<aop:aspectj-autoproxy/> 
声明自动代理生成器,使用aspectJ框架内部的功能,创建目标对象的代理对象
创建代理对象是在内存中实现的,修改目标对象的内存中的结构。创建为代理对象
所以目标对象就是被修改后的代理对象
aop:aspectj-autoproxy:会把spring容器中所有的目标对象一次行都生成代理对象
  1. 创建测试类,从spring容器中拿到目标对象
  • 通过代理执行方法,实现aop的功能增强
  • 这个返回的就不是那个类的对象了,而是他的接口的实现类
    -
    发现在没有修改源代码的情况下,就给原服务方法增加的新的功能(这里指那句话),这就是AOP的魅力,直白点就是一个高级点的动态代理

这样就完成了AspectJ:AOP面向切面编程
先一篇更新:AOP前置/后置/环绕通知注解

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值