首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用SpringAOP代替Java + Spring + Maven - AspectJ实现

用SpringAOP代替Java + Spring + Maven - AspectJ实现
EN

Stack Overflow用户
提问于 2014-10-29 01:53:05
回答 2查看 568关注 0票数 0

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插件的编译时编织。

代码语言:javascript
复制
@Controller
class A {
    public void method1() {
        method2("foo");
    }

    private String method2(String text) {
        return text;
    }
}

预期输出:

代码语言:javascript
复制
log.entering(method1)
log.entering(method2)
print abc
log.exiting(method2)
log.exiting(method1)
EN

回答 2

Stack Overflow用户

发布于 2014-10-30 00:58:41

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

票数 0
EN

Stack Overflow用户

发布于 2016-03-29 22:29:54

通过右键单击-配置-转换为AspectJ项目,将Maven项目转换为AspectJ项目,可以同时使用Maven和AspectJ项目。在那里,您可以创建不带注释的方面类或使用注释的方面的Java类。

对于您想要的结果,您可以使用如下方法:

代码语言:javascript
复制
    @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插件,比如

代码语言:javascript
复制
<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教程,在互联网上有很多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26615151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档