在java / spring中审计方法变量的最佳方法是什么?

时间:2017-12-19 06:30:00

标签: java spring spring-aop

我已经实现了spring AOP来审计我的方法(它会读取方法参数和参数)。 我不知道如何审计已在方法中声明的变量。 在下面的例子中,我想审计“c”和“name”变量。

public void method1(int a, int b){  
     int c = a+b;  
     String user= "test";  
} 

注意:我需要变量名称(即“c”)和它的值(假设a和b分别为3和4),即7和类似的变量名称(即“用户”)及其值(即我的审核“测试”

在我的应用程序中,假设我有一个名为“进程(对象...值)/进程(映射)”的方法,它将采用“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);
} 

这种方法的问题在于开发人员必须每次都创建地图并填充值。

如果我们能够以有效的方式做到这一点,请建议我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

  

我不确定如何审核已在方法中声明的变量。

简单的答案是:你不要!地方变量有其名称是有原因的 -  它们是本地的!此外,一些编译器将局部变量优化为常量或其他JVM操作码。

审核方法参数可能有意义。这可以使用Spring AOP for Spring组件轻松完成。公共的,非静态的方法。如果你需要审计非Spring对象或内部方法调用,如this.doSomething()甚至私有方法(糟糕的设计,永远不需要),你仍然可以在Spring应用程序中使用成熟的AspectJ。