SpEL-从对象中获取价值[]

时间:2018-07-30 17:01:45

标签: java spring spring-el

我正在尝试编写一个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)

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

SpEL对反射有合理的限制。我建议写一些static实用程序方法,并使用类型运算符从SpEL调用它:

@MyAnnotation(spelPath="T(com.my.proj.MyUtils).searchBar(#root)")