Java 用方面转换输入法
我有一个将字符串作为输入的方法,我希望有一个方面截取方法的执行,并在某些特定条件下修改字符串,让连接点接收新的输入,因此它不知道它已被转换Java 用方面转换输入法,java,aop,transform,Java,Aop,Transform,我有一个将字符串作为输入的方法,我希望有一个方面截取方法的执行,并在某些特定条件下修改字符串,让连接点接收新的输入,因此它不知道它已被转换 这是可能的,还是由于安全问题而无法实现?使用AspectJ,您可以声明如下建议: public aspect TransformationAspect { pointcut transform(String s) : call(* yourMethodName(..)) && args(s); Object around(St
这是可能的,还是由于安全问题而无法实现?使用AspectJ,您可以声明如下建议:
public aspect TransformationAspect {
pointcut transform(String s) : call(* yourMethodName(..)) && args(s);
Object around(String s): transform(s) {
// ... Transform String here
return proceed(s);
}
}
您的代码必须在编译时或运行时使用AspectJ Java代理进行编译。这应该是可能的,但取决于您使用的AOP技术 对于EJB3.x或CDI,它可能类似于以下伪代码:
Object intercept( InvocationContext context ) {
Object[] params = context .getParameters();
//modify the string and update the array
//the value of i depends on the method signature (the parameter position)
//and getting it is left for you as an excersise
params[i] = modify( (String)params[i] );
context.setParameters( params );
return context.proceed();
}