Spring:注解方式启用AOP

@EnableAspectJAutoProxy

proxyTargetClass=true:强制使用cglib动态代理

exposeProxy=true在当前线程暴露代理对象,这样就可以通过AopContext.currentProxy来拿到代理对象

复制代码
package cn.edu.tju.service5;


import org.springframework.aop.framework.AopContext;
import org.springframework.aop.framework.AopProxy;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Service;

@Service
@EnableAspectJAutoProxy(exposeProxy = true, proxyTargetClass = true)
public class InfoService {
    public String getHelloInfo(String str){
        return "hello,"+str;
    }
    public String getHiInfo(String str){
        //System.out.println(getHelloInfo("chopin"));
        System.out.println(((InfoService) AopContext.currentProxy()).getHelloInfo("chopin"));
        return "hi,"+str;
    }
    final public String getGreeting(String str){
        return "hay,"+str;
    }
}

当一个AOP方法调用了本类中另一个AOP方法时,被调用的AOP方法将失效,就像上述代码被注释掉的那样,AOP将失效。

AopContext使用的是ThreadLocal技术。

方法是private AOP失效。

相关推荐
MYMOTOE6几秒前
ISC-3000S的U-Boot 镜像头部解析
java·linux·spring boot
小橙编码日志几秒前
分布式系统推送失败补偿场景【解决方案】
后端·面试
程序员根根1 分钟前
Maven 核心知识点(核心概念 + IDEA 集成 + 依赖管理 + 单元测试实战)
后端
想用offer打牌2 分钟前
RocketMQ如何防止消息丢失?😯
后端·面试·rocketmq
CoderYanger3 分钟前
A.每日一题——3606. 优惠券校验器
java·开发语言·数据结构·算法·leetcode
谷哥的小弟11 分钟前
Spring Framework源码解析——ConfigurableEnvironment
java·spring·源码
毕设源码-郭学长12 分钟前
【开题答辩全过程】以 基于SpringBoot的宠物医院管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
利剑 -~13 分钟前
设计java高并安全类
java·开发语言
CoderYanger13 分钟前
D.二分查找-基础——744. 寻找比目标字母大的最小字母
java·开发语言·数据结构·算法·leetcode·职场和发展
柯南二号16 分钟前
【后端】【Java】一文详解Spring Boot 统一日志与链路追踪实践
java·开发语言·数据库