这是我关于堆栈溢出的第一个问题,所以请善待。
我正在运行一个应用程序
- 春天 2.5.x
- 可配置的注释
- 编译时编织 (CTW)
- 行家
- 日食/ajdt
我使用 CTW,一切运行良好。但是如果我第一次实例化一个带注释的类需要很长时间。第二次非常快。
查看第一次调用的分析器堆栈跟踪,我发现 org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution(Method) 使用了 93% 的时间
在第二次调用的堆栈跟踪中,只有 1% 的时间用于此方法。更糟糕的是:第一次调用的时间大约是第二次调用的 10 倍。
我想知道,因为我认为 CTW 不再需要织布工。
但似乎只有当有人在这个类上调用 new 时,Spring 才开始分析原型 bean。它使用 aspectj weaver 来分析需要做什么,并为下一次调用做好准备以加快这个过程。
有没有人有任何加速初始化注释类的第一次调用的经验?
这是我的 pom 的一个片段:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-compile</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<configuration>
<verbose>true</verbose>
<complianceLevel>1.5</complianceLevel>
<source>1.5</source>
<showWeaveInfo>true</showWeaveInfo>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
</plugin>