Java + Spring + Maven应用程序:
有没有人可以给我提供链接,或者给我一个没有基于代理的Spring AOP的纯AspectJ实现的建议?
我的应用程序完全是基于Spring + Maven的。我目前使用Spring AOP实现了aspects,它并没有解决我的问题。
如果我尝试从同一private method2()中的public method1()访问class A,则不支持此操作。
我想知道: 1)如何编写一个带有切入点的aspectj来支持类内方法调用? 2)如何将其配置到我当前使用AspectJ加载时编织的Spring、maven项目中? 3)如何在AspectJ服务器+ eclipse中配置Tomcat Maven插件的编译时编织。
@Controller
class A {
public void method1() {
method2("foo");
}
private String method2(String text) {
return text;
}
}预期输出:
log.entering(method1)
log.entering(method2)
print abc
log.exiting(method2)
log.exiting(method1)发布于 2014-10-30 00:58:41
我对您的建议是使用Spring Roo创建一个虚拟项目(这样您就可以看到Maven pom.xml和Spring applicationContext.xml文件的样子),并下载Spring STS版本的Eclipse,它具有正确的AspectJ设置。
发布于 2016-03-29 22:29:54
通过右键单击-配置-转换为AspectJ项目,将Maven项目转换为AspectJ项目,可以同时使用Maven和AspectJ项目。在那里,您可以创建不带注释的方面类或使用注释的方面的Java类。
对于您想要的结果,您可以使用如下方法:
@Around("execution ( * A.method1(..))")
public void captureMethodOne(ProceedingJoinPoint joinPoint) throws Throwable{
System.out.println("log.entering(method1)");
joinPoint.proceed();
System.out.println("log.exiting(method1)");
}另外,不要忘记在pom.xml中输入aspectj和aspectj maven插件,比如
<properties>
<maven.compiler.plugin.version>3.5.1</maven.compiler.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.7</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.8</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>希望能有所帮助。PS先检查AspectJ教程,在互联网上有很多。
https://stackoverflow.com/questions/26615151
复制相似问题