我正在尝试编写一个SpEL表达式,该表达式可以搜索Object []数组。下面是一些示例代码:
public class Foo {
private String foo;
public Foo(String foo) {
this.foo = foo;
}
private String getFoo() {
return foo;
}
}
public class Bar {
private String bar;
public Bar(String bar) {
this.bar = bar;
}
private String getBar() {
return bar;
}
}
public static void main(String args) {
Object arr[] = {new Foo("foo1"), new Bar("bar1")};
ExpressionParser expressionParser = new SpelExpressionParser();
Expression expression = expressionParser.parseExpression("someExpression to search for bar");
Object expressionResult = expression.getValue(arr, Object.class);
}
有人可以帮我写一个SpEL搜索arr并找到第一个具有“ bar”属性并返回bar值的对象吗?
此方法的实际应用是,我正在为Aspect编写注释,并尝试在注释中声明参数的路径:
@MyAnnotation(spelPath="someExpression to search for bar")
public void myMethod(Foo foo, Bar bar, more arguments)
非常感谢您的帮助!
答案 0 :(得分:2)
SpEL对反射有合理的限制。我建议写一些static
实用程序方法,并使用类型运算符从SpEL
调用它:
@MyAnnotation(spelPath="T(com.my.proj.MyUtils).searchBar(#root)")