我已经实现了spring来审计我的方法(这将读取方法参数和参数)。我不知道如何审计方法中声明的变量。在下面的示例中,我希望审计"c“和"name”变量。
public void method1(int a, int b){
int c = a+b;
String user= "test";
} 注意:我需要变量名(即"c")和它的值(假设a和b分别为3和4),即7和类似的变量名(即“用户”)和它的值(即“测试”)用于审计。
在我的应用程序中,假设我有一个名为“process(Object. values) / process(Map)”的方法,它将接受"varargs“或"map”作为它的参数(process()方法定义取决于我们)。因此,我们需要将要审计的变量传递给这个process()方法。
我的方法:
public void method1(int a, int b){
int c = a+b;
String user= "test";
// logic to send variables to process method
Map<String, Object> myMap = new HashMap<>();
myMap.put("c",c);
myMap.put("user",name);
process(myMap);
} 这种方法的问题是,开发人员每次都必须创建映射并填充值。
如果我们能以有效的方式做这件事,请建议我。提前谢谢。
发布于 2017-12-30 06:35:41
我不知道如何审计方法中声明的变量。
简单的答案是:您不知道!局部变量有其名称是有原因的-它们是本地变量!,此外,一些编译器将局部变量优化为常量或其他JVM操作码。
对方法参数进行审计可能是有意义的。这可以很容易地为Spring组件的公共、非静态方法使用Spring。如果您需要审计非Spring对象或内部方法调用,比如this.doSomething(),甚至是私有方法(糟糕的设计,不应该是必要的),那么您仍然可以在您的Spring应用程序中使用成熟的AspectJ。
https://stackoverflow.com/questions/47881180
复制相似问题