繁体   English   中英

Spring AOP:在建议和注释方法之间传递变量

[英]Spring AOP: passing variables between advice and annotated methods

我正在编写一些方法来处理数据库操作。 每个方法首先获取一个连接,执行操作,最后关闭连接。

我想知道 Spring AOP 是否可以帮助处理连接获取和关闭。 具体来说,我想要类似的东西:

@Aspect
@Component
public class ConnAspect {
    @Around("@annotation(connHandle)")
    public void handleConnection(ProceedingJoinPoint pjp, ConnHandle connHandle) throws Throwable {
        Connection conn = datasource.getConnection();
        pjp.proceed(); // can pjp get variable conn?
        conn.close();
    }
}

@Component
public class DbOperation {
    @ConnHandle
    public void operation1(...) {
        ... // do some operation with conn
    }
    ...
}

有可能这样做吗? 还是我应该求助于其他解决方案? 感谢您的任何提示和答案。

不,这是不可能的,评论中的建议对您没有帮助。 您不能神奇地将不存在的方法参数或局部变量注入方法中。 此外,您正在尝试做的是反 AOP:不要将您的横切关注点封装在一个方面,而是以某种方式将方面上下文引入您的应用程序,理想情况下应该不知道该方面并在没有它的情况下工作。 您应该描述您想要实现的目标,而不是专注于您梦想实现您的想法的特定(糟糕)设计。

此外,与为此目的滥用 AOP 相比,方法有更简单、更反思的方法来获取自己的注解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM