这是我关于堆栈溢出的第一个问题,所以请客气。Spring @Configurable使用编译时织入的启动性能
我运行一个应用程序与
- 弹簧2.5.X
- 配置注解
- 编译时织入(CTW)
- 行家
- 蚀/ AJDT
我使用CTW,一切运行良好。但是,如果我第一次实例化一个带注释的类,它需要很长时间。第二次非常快。
综观探查堆栈跟踪针对第一呼叫我看到的时间93%是使用 org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution(方法)
在堆栈跟踪第二次调用只有1%的时间用于此方法。更糟糕的是:第一次通话大约需要第二次通话的10倍。
我在想,因为我认为CTW不再需要织布工。
但是,Spring似乎只在有人在这个类上调用new时就开始分析原型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>
我认为这是CTW所固有的。第一次调用必须完成所有繁重的工作,才能分析,编织和生成运行时类,而且它非常昂贵。 – skaffman 2009-07-16 10:14:59