Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 使用MethodInvokingFactoryBean设置非常规bean_Java_Spring - Fatal编程技术网

Java 使用MethodInvokingFactoryBean设置非常规bean

Java 使用MethodInvokingFactoryBean设置非常规bean,java,spring,Java,Spring,我正在试着设置bean。它的一个属性称为proxyHost。但是,apachehostconfiguration类不遵循javabean约定。proxyHost的接受类型为的参数,而返回字符串 我的applicationContext.xml中有以下代码片段 <bean id="proxyHost" class="org.apache.commons.httpclient.ProxyHost"> <constructor-arg index="0" ty

我正在试着设置bean。它的一个属性称为
proxyHost
。但是,apachehostconfiguration类不遵循javabean约定。proxyHost的接受类型为的参数,而返回字符串

我的
applicationContext.xml
中有以下代码片段

    <bean id="proxyHost" class="org.apache.commons.httpclient.ProxyHost">
        <constructor-arg index="0" type="java.lang.String" value="myproxy.com" />
        <constructor-arg index="1" type="int" value="8087" />
    </bean>
    <bean id="hostConfiguration" class="org.apache.commons.httpclient.HostConfiguration">
         <property name="proxyHost" ref="proxyHost" />
    </bean>

当我尝试加载应用程序的applicationContext时,我收到以下错误,因为
HostConfigurationClass
没有返回代理主机或接受字符串的setter的
getProxyHost
:-

org.springframework.beans.NotWritablePropertyException:bean类[org.apache.commons.httpclient.HostConfiguration]的无效属性“proxyHost”:bean属性“proxyHost”不可写或具有无效的setter方法:setter的参数类型是否与getter的返回类型匹配

在springsource论坛上搜索时,我遇到了这个问题,建议使用它来解决这个问题

我不确定使用
MethodInvokingFactoryBean
会有什么帮助,因为我需要方法
getProxyHost()
的返回类型
ProxyHost
来解决这个问题,对吗?我也不确定在这种情况下如何使用它。我不清楚
MethodInvokingFactoryBean
的内部结构。因此,如果有人能在上面的上下文中给我举个例子,说明如何使用
MethodInvokingFactoryBean
,那将是非常有帮助的

同样,这也是设置bean(如
HostConfiguration
)的普遍接受的方法,这些bean在春季不遵循约定吗


谢谢

如另一个答案中所述,您可以实现一个。如果您使用的是Spring3.0,那么还可以查看-@Configuration/@Bean

首先,实例化
代理主机

(即
ProxyHost-ProxyHost=new-ProxyHost(“myproxy1.com”,8080);

之后,使用
MethodInvokingFactoryBean
HostConfiguration
上调用
setProxyHost()
,并将
proxyHost
作为参数传递。
(即
hostConfiguration.setProxyHost(proxyHost);


setProxyHost
<bean id="proxyHost" class="org.apache.commons.httpclient.ProxyHost">
        <constructor-arg index="0" type="java.lang.String" value="myproxy1.com" />
        <constructor-arg index="1" type="int" value="8088" />
</bean>
<bean id="hostConfiguration" class="org.apache.commons.httpclient.HostConfiguration" />
 <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetObject">
                <ref local="hostConfiguration"/>
            </property>
            <property name="targetMethod">
                <value>setProxyHost</value>
            </property>
            <property name="arguments">
                <ref local="proxyHost"/>
            </property>
    </bean>