這是我關於堆棧溢出的第一個問題,所以請客氣。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