我正在开发一个大型Spring Boot应用程序,并想引入一个apsect。因为我需要“ if()”切入点标识符,所以我需要的不仅仅是Spring AOP。但: -我没有将我的Aspect明确定义为Spring Aspect,但似乎是由Spring处理的 -如果我在“ .js”文件中定义了方面,那么编织者就找不到该方面。
我非常仔细地遵循了https://www.baeldung.com/aspectj中的说明。基本上,我为我的Maven项目使用一个运行时Weaver插件,并将该方面注册到“ 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>
答案 0 :(得分:0)
首先,AspectJ源文件不是JavaScript,即它们没有*.js
文件扩展名,而是*.aj
。
然后,您需要执行Spring manual section of AspectJ中描述的内容,而不是@EnableAspectJAutoProxy
(它会激活基于代理的Spring AOP)。按照section about load-time weaving中的说明使用@EnableLoadTimeWeaving
。
还请注意,AspectJ编译器需要编译本机语法AspectJ文件。为此,您要使用AspectJ Maven plugin。