Spring AOP:在通知和带注释的方法之间传递变量



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

我想知道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更简单的、反射的方法。

相关内容

  • 没有找到相关文章

最新更新