为了账号安全,请及时绑定邮箱和手机立即绑定

AspectJ AOP LTW 不适用于 javaagent 的动态加载

AspectJ AOP LTW 不适用于 javaagent 的动态加载

达令说 2021-06-21 20:34:22
它包含2个模块:aop-lib - 用作 lib 的方面。它包含以下类Wrap.java - 这是用于附加建议的注释WrapDef.java - 它是上述Wrap注释的定义。aop-app - 使用上述方面库DynamicLoad.java - 动态加载 javaagent 的类Main.java - 使用Wrap注释的主类。目录结构如下:.├── README.md├── aop-app│   ├── pom.xml│   └── src│       └── main│           └── java│               └── com│                   └── aop│                       └── app│                           ├── DynamicLoad.java│                           └── Main.java└── aop-lib    ├── pom.xml    └── src        └── main            └── java                └── com                    └── aop                        └── app                            └── lib                                ├── Wrap.java                                └── WrapDef.java我正在尝试通过加载时间编织(LTW)通过动态加载官方文档中提到的 javaagent 来在aop-lib内部使用方面库(AOP 建议库)。但它不起作用。aop-app以下是Wrap.java的内容@Target({ElementType.METHOD, ElementType.TYPE})@Retention(value = RetentionPolicy.RUNTIME)public @interface Wrap { }以下是WrapDef.java的内容@Aspectpublic class WrapDef {    private static final Logger logger = LoggerFactory.getLogger(WrapDef.class);    public static boolean loaded = false;    @Around("@annotation( wrapAnnotation ) && execution(* *(..))")    public Object processSystemRequest(final ProceedingJoinPoint pjp, Wrap wrapAnnotation)            throws Throwable {        logger.debug("before wrap");        Object o = pjp.proceed();        logger.debug("after wrap");        return o;    }    static {        System.out.println("Loading");        WrapDef.loaded = true;    }    public static void reportLoaded() {        System.out.println("loaded : " + loaded);    }}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信