0

Java + Spring + Maven 应用程序:

有人可以为我提供链接或就没有基于代理的 Spring AOP 的纯 AspectJ 实现向我提供建议吗?

我的应用程序完全基于 Spring + Maven。我目前已经使用 Spring AOP 实现了方面,但这并没有解决我的问题。

如果我尝试private method2()public method1()同一内部访问 a ,class A则不支持。

我想知道:1)如何编写一个带有切入点的aspectj,它支持类内方法调用?2) 如何使用 AspectJ 加载时编织将其配置到我当前的 Spring、maven 项目中?3)如何在Tomcat服务器+eclipse中配置AspectJ Maven Plugin进行编译时编织。

@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)
4

2 回答 2

0

我对您的建议是使用 Spring Roo 制作一个虚拟项目(这样您就可以看到 Maven pom.xml 和 Spring applicationContext.xml 文件的外观)并下载正确设置了 AspectJ 的 Spring STS 版本的 Eclipse。

于 2014-10-29T16:58:40.957 回答
0

您可以通过右键单击 - 配置 - 转换为 AspectJ 项目将 Maven 项目转换为 AspectJ 项目来一起使用 Maven 和 AspectJ 项目。从那里您可以创建没有注释的 Aspect 类或使用注释的 Aspect 的 Java 类。

至于你想要的结果,你可以使用如下的 Around 方法:

    @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 教程,互联网上有很多。

于 2016-03-29T14:29:53.570 回答