【发布时间】:2021-05-05 03:00:34
【问题描述】:
我们如何从JointPoint(in logJdbcOperation)的调用方法(deleteTask)中获取参数值(uId)?我能够记录 sql 语句和 sql 参数,但找不到记录 uId 值的方法。 请指导我。
public int deleteTask(String taskname, String uId) {
String sql = "delete from shedlock where NAME= :name";
MapSqlParameterSource namedParameters = new MapSqlParameterSource();
((MapSqlParameterSource) namedParameters).addValue("name", taskname, Types.VARCHAR);
return namedJdbcTemplate.update(sql, namedParameters);
}
@Aspect
@Component
public class LoggingAspect {
private static final Logger LOGGER = LogManager.getLogger(LoggingAspect.class);
@Before("execution(* org.springframework.jdbc.core..NamedParameterJdbcOperations.*(String, ..))")
public void logJdbcOperation(JoinPoint jp) {
Object[] methodArgs = jp.getArgs();
String statement = methodArgs[0].toString();
MapSqlParameterSource params = (MapSqlParameterSource)methodArgs[1];
LOGGER.debug("SQL statement:" + statement);
}
}
【问题讨论】:
标签: spring-aop aspect