Java 使用MethodInvokingFactoryBean设置非常规bean
我正在试着设置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
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>