Spring 3.0/AOP/Aspectj :autoproxy intercept any call to getConnection()

标签 spring connection aop aspectj

我试图拦截任何对 getConnection() 方法的调用来设置 dbms indentifier 。我已经实现了一个方面来获取它,但我什么也没得到。任何想法?谢谢!

import java.sql.CallableStatement;
import java.sql.Connection;

import javax.servlet.http.HttpSession;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;

import es.iberia.tryp.model.entities.Usuario;

@Component
@Aspect
public class ConnectionAspect {

    @AfterReturning(value = "execution(java.sql.Connection javax.sql.DataSource+.getConnection(..))", returning = "connection")
    //@AfterReturning(value = "execution(java.sql.Connection org.springframework.jdbc.datasource.*.*(*))", returning = "connection")
    //@AfterReturning(value = "execution(java.sql.Connection java.sql.Connection *(..))", returning = "connection")
    //@AfterReturning(value = "execution(java.sql.Connection org.springframework.jdbc.datasource.DriverManagerDataSource.*(..))", returning = "connection")

    public void prepare (Connection connection) throws Throwable {

        HttpSession httpSession = (HttpSession) RequestContextHolder.currentRequestAttributes().resolveReference(RequestAttributes.REFERENCE_SESSION);

        if (httpSession!=null && (Usuario)httpSession.getAttribute("usuario")!=null && ((String)((Usuario)httpSession.getAttribute("usuario")).getNomina())!=null) {
            String nomina = (String)((Usuario)httpSession.getAttribute("usuario")).getNomina();
            String prepSql = "{ call DBMS_SESSION.SET_IDENTIFIER('" + nomina +"') }";
            CallableStatement cs = connection.prepareCall(prepSql);                             
            cs.execute();
            cs.close();         
        }
    }
} 

最佳答案

检查您的 xml 文件中是否添加了以下标记。

aop:aspectj-autoproxy

还要检查您是否已在该 ConnectionAspect 类的 xml 中添加了 bean 定义。

关于Spring 3.0/AOP/Aspectj :autoproxy intercept any call to getConnection(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057063/

相关文章:

c# - 如何获取所有局部变量的转储?

java - 使用gradle生成方法aspectOf()

java - 如何将硬编码的 JDBC 连接属性从 Java 类移出并移入属性文件?

php - 如何使用一个连接实现 2 个或更多功能?

php - 为什么我不断收到错误 500 (mySQL)?

python - 远程连接到 Elasticsearch 时连接被拒绝

java - 如何使用spring AOP切入点表达式拦截返回类型List

java - 如何在 Spring MVC 中将控制重定向到另一个文件夹?

java - 设置Spring security后无法再访问jsp

java - Lombok @SuperBuilder 没有初始化我的类对象