我可以隐藏由 aspectj-maven-plugin 创建的 ***$AjcClosure*.class 文件吗?

Can I hide ***$AjcClosure*.class files created by aspectj-maven-plugin?

我正在使用 aspectj-maven-plugin 在方法中生成记录器,该方法是注释驱动的。

编译后,对于定义注释的每个方法,我可以看到在我各自的目标 class 文件夹中生成了一个 ***$AjcClosure*.class 文件。

问题:

  1. 虽然这是一个编译时间 activity,但有什么方法可以避免在编译完成后将这些 class 放在我的 class 文件夹中结束了?

  2. 如果不是,这些 classes 的目的是什么?它们是否会影响创建的 jar/war 文件的大小,从而影响总体开销在应用程序中添加每一个注释?

Java 版本:1.7 & AspectJ Maven 插件当前配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.5</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <complianceLevel>1.7</complianceLevel>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

经过多次试验和错误后,我发现 @Around 建议导致创建了这些 类。详情请参考White paper on optimizing Aspects

现在,我正在使用@Before 和@After 通知来实现在方法之前和之后记录日志的目的。

我可能是错的,但这对我有用。请随时post发表您的意见。