在AspectJ中为给定类型的任何参数提供建议

时间:2009-05-16 18:22:57

标签: aop aspectj

有没有办法在任何具有给定类型参数的方法上提供建议。我打算将它用于需要输入过滤的类。

举个例子:

@Filtered
class Unsafe {
    public void doStuff (String input) { ... }

    public void doMoreStuff (String input, int value, String name) { ... }
}

我想编写适用于此类中方法的任何字符串参数的建议,以便我可以使用安全的转义版本替换其内容(以防止例如SQL注入)。

是否可以编写这样的切入点?

2 个答案:

答案 0 :(得分:0)

由于你可以在不同的地方有多个字符串,我看不出你怎么做,但是,这两个类应该调用写入数据库的相同方法。此时,您可以使用around来更改字符串以使其安全并通过该字符串。

答案 1 :(得分:0)

在我看来,你仍然需要知道是否有一个模式用于SQL语法中的所有方法。

然后你可以在你的建议中检查方法的参数:

Object around() : PATTERN_FOR_METHODS_THAT_TAKES_IN_SQL_STRING {
    Signature sig = thisJoinPointStaticPart.getSignature();
    Object[] args = thisJoinPoint.getArgs();
    //Check the type of each object in the args, and re-format String type object

    return proceed();// Continue with the current joint-point method
}

PATTERN_FOR_METHODS_THAT_TAKES_IN_SQL_STRING 替换为实际模式