Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在查找方法中使用表达式_Java_Spring - Fatal编程技术网

Java 在查找方法中使用表达式

Java 在查找方法中使用表达式,java,spring,Java,Spring,我想重写SpringXML中的keysForReload方法以返回空迭代器 <!-- MetricsMethodData Cache Store --> <bean id="bean1" class="com.ext.Myclass" scope="singleton" lazy-init="true"> <lookup-method name="keysForReload" bean="metrics.keysForRe

我想重写SpringXML中的
keysForReload
方法以返回空迭代器

    <!-- 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();
    }
MyClass具有keysForReload方法
公共迭代器keysForReload(){
返回键();
}
我可以使用
Expression language
ArrayList
获取迭代器吗?因为我不能改变方法


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

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

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

像这样的东西对你有用吗

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

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


}
@Bean(“keysForReload”)
公共列表keysForReload(){
返回列表。newArrayList(“val”);
}    
@组成部分
公共类Myclass{
//这里是你的迭代器
@值(“#{keysForReload.iterator()}”)
专用迭代器itr;
}

这样的东西对你有用吗

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

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


}
@Bean(“keysForReload”)
公共列表keysForReload(){
返回列表。newArrayList(“val”);
}    
@组成部分
公共类Myclass{
//这里是你的迭代器
@值(“#{keysForReload.iterator()}”)
专用迭代器itr;
}

是的,您可以在SpEL中调用方法,但您应该定义bean度量。我已经定义了bean
度量。keysForReload
但问题是查找方法需要bean引用,并且表达式可以在值项中使用。这应该是可能的,您会遇到什么错误?@kuhajeyan无法将ArrayList转换为迭代器!你真的应该使用@lookup吗?是的,你可以在SpEL中调用方法,但你应该定义你的bean度量。我已经定义了bean
度量。keysForReload
,但问题是lookup方法使用bean引用,表达式可以在valuesseems中使用,这应该是可能的,你的错误是什么?@kuhajeyan无法将ArrayList转换为迭代器!你真的应该使用@lookup吗?