From a65d87a9ad5d5c29bce35060df7387aa357031a8 Mon Sep 17 00:00:00 2001 From: linlei Date: Sat, 13 Apr 2024 14:04:59 +0800 Subject: [PATCH] =?UTF-8?q?@EnableLoadTimeWeaving=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring-aop/spring-aop-enableLoadTimeWeaving/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spring-aop/spring-aop-enableLoadTimeWeaving/README.md b/spring-aop/spring-aop-enableLoadTimeWeaving/README.md index 932e68b..bd1bcf7 100644 --- a/spring-aop/spring-aop-enableLoadTimeWeaving/README.md +++ b/spring-aop/spring-aop-enableLoadTimeWeaving/README.md @@ -262,6 +262,14 @@ public class FooService { } ``` +这是启动参数,使用AspectJ Weaver和Spring Instrumentation实现加载时编织。它确保了在应用程序启动时启用了加载时编织,使AspectJ切面能够拦截和处理方法调用。 + +> 使用自定义的jar包存放位置(如aspectjweaver-1.9.7.jar,spring-instrument-5.3.10.jar)时,注意确保在引用这些jar包时路径替换的正确性。在启动参数或配置文件中指定的路径应该与实际jar包存放位置一致,以避免加载时编织或其他功能无法正常工作。 + +```shell +java -javaagent:D:\tools\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar -javaagent:D:\tools\repository\org\springframework\spring-instrument\5.3.10\spring-instrument-5.3.10.jar -Dfile.encoding=UTF-8 com.xcs.spring.EnableLoadTimeWeavingDemo +``` + 运行结果,加载时编织成功地拦截了通过 Spring 容器获取的 `FooService` bean,以及直接使用 `new` 操作符创建的 `FooService` 对象。在每次调用 `foo()` 方法时,都会先打印方法被调用的消息,然后执行原始的方法逻辑(打印 "foo"),最后打印方法返回值,并返回给调用方。这证明切面 `MyLTWAspect` 中定义的逻辑在目标方法调用前后得到了执行,不论是从 Spring 容器中获取的 bean 还是直接创建的对象,都受到了拦截。 ```java