Используйте аспекты AspectJ в проекте Spring - PullRequest
0 голосов
/ 26 мая 2019

Я работаю над большим приложением Spring Boot и хочу представить приложение. Поскольку мне нужны указатели точек if, мне нужно больше, чем Spring AOP. Но: - Я явно не определяю свой аспект как аспект весны, но, похоже, он обрабатывается весной -Если я определил аспект в файле «.js», он не найден ткачом.

Я очень внимательно следовал инструкции в https://www.baeldung.com/aspectj. В основном я использую плагин Weaver для моего проекта maven и регистрирую аспект в файле "aop.xml".

Как я могу отделить жизненный цикл моего аспекта от весны?

package myApp;

public aspect MyAspect {

    pointcut prepInFile() :
            execution(public void MySpringBootApp.execute());

    after(): MyMethod() {
        System.out.println("*** I am here ***");
    }

}
<aspectj>
    <aspects>
        <aspect name="myApp.MyAspect"/>
        <weaver options="-verbose -showWeaveInfo">
            <include within="myApp"/>
        </weaver>
    </aspects>
 </aspectj>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
                <argLine>
                    -javaagent:"${settings.localRepository}"/org/aspectj/
                    aspectjweaver/${aspectj.version}/
                    aspectjweaver-${aspectj.version}.jar
                </argLine>
                <useSystemClassLoader>true</useSystemClassLoader>
                <forkMode>always</forkMode>
            </configuration>
        </plugin>
    </plugins>
</build>

1 Ответ

0 голосов
/ 27 мая 2019

Прежде всего, исходные файлы AspectJ не являются JavaScript, то есть они не имеют расширения *.js, скорее *.aj.

Затем вместо @EnableAspectJAutoProxy (который активирует прокси-сервер).на основе Spring AOP) вам нужно то, что описано в разделе руководства Spring AspectJ , например, используйте @EnableLoadTimeWeaving, как описано в разделе о ткачестве во время загрузки .

Обратите внимание, что файлы AspectJ с собственным синтаксисом должны компилироваться компилятором AspectJ.Для этого вы хотите использовать AspectJ Maven плагин .

...