Могу ли я скрыть файлы ***$AjcClosure*.class, созданные с помощью аспекта j-maven-plugin?

Я использую aspectj-maven-plugin для создания регистраторов в методах, и этот подход основан на аннотациях.

После компиляции для каждого метода определена аннотация, я вижу, что файл ***$AjcClosure*.class создается в моей соответствующей папке файлов целевого класса.

Проблемы:

  1. Хотя это действие во время компиляции, есть ли способ избежать того, чтобы эти классы находились в моей папке с файлами классов после завершения компиляции?

  2. Если нет, то какова цель этих классов и не повлияют ли они на размер создаваемого файла 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>

person Dish    schedule 06.02.2017    source источник
comment
Почему наличие этих классов является проблемой? Они нужны для корректной работы AspectJ.   -  person Tunaki    schedule 06.02.2017
comment
Привет, Тунаки, после декомпиляции я вижу, что эти классы пусты. class{} доступен только этот код. Какая может быть потребность в таком классе? Также, когда я запускаю сборку проекта через командную строку, эти классы не генерируются.   -  person Dish    schedule 06.02.2017
comment
Возможно, вас обманывает декомпилятор...   -  person Tunaki    schedule 06.02.2017
comment
Ну что тут сказать на этот комментарий :) Бегаю на пруфах!   -  person Dish    schedule 06.02.2017
comment
Кроме того, я повторяю пункт 2 здесь, что создает один файл для каждой аннотации, добавленной в исходный код - для какой бы цели это ни было, хороший код/идея вообще?   -  person Dish    schedule 06.02.2017


Ответы (1)


После нескольких проб и ошибок я понял, что совет @Around вызывает создание этих классов. Дополнительные сведения см. в Белой книге по оптимизации Аспектов.

Теперь я использую советы @Before и @After для достижения цели ведения журнала до и после метода.

Я могу ошибаться, но это сработало для меня. Пожалуйста, не стесняйтесь оставлять свои комментарии.

person Dish    schedule 07.02.2017