это мой первый вопрос о переполнении стека, поэтому, пожалуйста, будьте добры.
я запускаю приложение с
- пружина 2.5.х
- Настраиваемые аннотации
- Время компиляции (CTW)
- 1012 * Maven *
- затмение / AJDT
Я использую CTW, и все работает нормально. Но если я впервые создаю аннотированный класс, это занимает очень много времени. во второй раз это очень быстро.
Глядя на трассировку стека профилировщика для первого вызова, который я видел, 93% времени используется
org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution (Метод)
В трассировке стека второго вызова в этом методе используется только 1% времени. Еще хуже: первый вызов занимает примерно в 10 раз больше времени, чем второй.
Мне было интересно, так как я думал, что ткач больше не нужен в CTW.
Но, похоже, Spring начинает анализировать прототип bean-компонента только после того, как кто-то вызывает new в этом классе. Для анализа того, что нужно сделать, он использует 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>