SpringBoot项目 基于注解实现AOP

<1> 导入AOP依赖

		<dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.9</version>
        </dependency>

<2> 添加需要被增强的业务方法

@RestController
@RequestMapping("/demo")
public class Demo {

    @PostMapping("/save")
    public void save() {
        System.out.println(System.currentTimeMillis());
        System.out.println("我是业务方法 ...");
    }
    
}

<3> 定义通知类,制作通知

@Component  // 定义通知类受Spring容器管理
@Aspect     // 定义当前类为切面类
public class MyAdvice {

    @Before("pt()")
    public void before() {
        System.out.println("before方法在save()被调方法前执行了");
    }
	@After("pt()")
    public void after() {
        System.out.println("after方法在被调方法之后执行了");
    }

    /**
     * 说明:切入点定义依托一个不具有实际意义的方法进行,
     * 即无参数,无返回值,方法体无实际逻辑
     * execution() 第一个参数:原需增强方法的返回值类型
     *             第一个参数:被增强方法的路径,直到具体的方法名
     */
    @Pointcut("execution(void com.example.sentinel_demo.controller.Demo.save())")
    private void pt(){}
}

总结:

AOP的实现原方法并无感知,所有的操作都是在切面类中定义和实现的,这也正是spring官方所描述的,在不改变原有方法的前提下,实现业务的增强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值