gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:14:41 24 4
gpt4 key购买 nike

我试图拦截任何对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com