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失效。

相关推荐
美团技术团队3 分钟前
美团 BI 在指标平台和分析引擎上的探索和实践
后端
凸头7 分钟前
AI 流式聊天接口实现(WebFlux+SSE)
java·人工智能
简宸~8 分钟前
VS Code + LaTex + SumatraPDF联合使用指南
java·vscode·latex·sumatrapdf
弦有三种苦难18 分钟前
CCF-202412-T3缓存模拟90分
java·开发语言·spring
青槿吖24 分钟前
SpringMVC通关秘籍(下):日期转换器、拦截器与文件上传的奇幻冒险
java·开发语言·数据库·sql·mybatis·状态模式
JimmtButler26 分钟前
我用 Claude Code 给 Claude Code 做了一个 DevTools
后端·claude
weixin_4563216430 分钟前
Java架构设计:Redis AOF持久化深度解析(原理+实战+避坑)
java·开发语言·redis
leaves falling31 分钟前
数据结构-堆学习
java·数据结构·学习
Java水解35 分钟前
Java 中实现多租户架构:数据隔离策略与实践指南
java·后端
Master_Azur44 分钟前
Java面向对象之多态与重写
后端