【发布时间】:2017-05-15 15:33:02
【问题描述】:
在这个例子中:
public class ConnectionPool {
public java.sql.Connection getConnection() {
...
}
}
@Bean
@Scope("singleton")
public ConnectionPool connectionPool(...) throws Exception {
return new ConnectionPoolImpl(...);
}
我想监控从 getConnection() 返回的 Connection 对象上对 java.sql.Connection.close() 的调用。
我尝试在 getConnection() 方法中添加@Lookup,但没有效果。
如何让 Spring 代理 java.sql.Connection 对象?
【问题讨论】:
-
监控并做什么?
-
像添加切入点一样监控。我正在编写一个泄漏检测器,它将在每个 HTTP 请求之后检查所有连接是否都返回到池中。
-
这不是 Spring 可以单独完成的事情,假设
getConnection返回由您的代码管理的Connection对象。您需要使用@AfterReturning或@Around建议拦截getConnection。然后,您需要实现该建议以包装在某个委托对象(或构建代理)中返回的Connection对象,仅拦截其close方法并进行检测。
标签: java spring spring-aop