在lookup-method中使用Expression

时间:2016-09-06 09:49:08

标签: java spring

我想在spring xml中覆盖keysForReload方法以返回空Iterator

    <!-- MetricsMethodData Cache Store -->
<bean id="bean1"
    class="com.ext.Myclass"
    scope="singleton" lazy-init="true">     

    <lookup-method name="keysForReload" bean="metrics.keysForReload"/> 
    <!-- Not working as expecting Iterator while it returns ArrayList -->

      <!--  can I use expression language somehow value="#{metrics.keysForReload.iterator()}" -->

</bean>

<bean id="metrics.keysForReload" class="java.util.ArrayList">
    <constructor-arg>
        <list value-type="java.lang.String">                
        </list>
    </constructor-arg>
</bean>

这个方法我想在XML中重写

   MyClass has keysForReload method 
    public Iterator<String> keysForReload(){
        return keys();
    }

我可以使用Expression languageArrayList获取Iterator吗?因为我无法改变方法。

示例:value="#{metrics.keysForReload.iterator()}"

2 个答案:

答案 0 :(得分:0)

您可以在Spring表达式语言中调用方法并分配给值,但在这种情况下,您必须定义bean metrics 。看看这个例子。 SpEL example

答案 1 :(得分:0)

这样的事情对你有用吗?

@Bean("keysForReload")
    public List<String> keysForReload() {
        return Lists.newArrayList("val");
    }    

@Component
public class Myclass{
//your iterator here
   @Value("#{keysForReload.iterator()}")
   private Iterator<String> itr;


}