我想从DB动态传递属性的value标记中的值。这在春天有可能吗?怎么样?
例如,在下面的配置中。
<bean id="proxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="WSDLURL"/>
<property name="address" value="WSDLURL"/>
<property name="username" value="username"/>
<property name="password" value="password"/>
</bean>
我希望上面提到的属性为"proxyFactory"
的bean的属性,即<WSDLURL>
和<username>
以及<password>
从数据库中获取并动态传递。< / p>
答案 0 :(得分:1)
您可以编写另一个Java类并将其作为应用程序上下文中的bean使用,并使用Spring Expression Language,您已经评估并获得方法调用的输出。
XML配置:
<property name="serviceClass"
value="#{webServiceInfoFromDB.wsdlUrl}" />
<property name="username"
value="#{webServiceInfoFromDB.username}" />
WeServiceInfoFromDB.java类:
class WebServiceInfoFromDB {
public String getWsdlUrl() {
// Get the Wsdl URL from DB.
return wsdlUrl;
}
public String getUsername(){
// get the username from DB
return username;
}
应用程序上下文中的XML配置:
<bean id="webServiceInfoFromDB" class="WebServiceInfoFromDB">
<property name="dataSource" ref="dataSource"/>
</bean>
答案 1 :(得分:-1)
您可以使用包含键值对的属性文件名设置属性Place Holder。
<context:property-placeholder location="config.properties" />
config.properties文件如下所示:
wsdl.url = http://server:8080/ServiceAccessPoint
webservice.username = guest
webservice.passward = guest123
现在您可以使用$ {key}
修改bean定义<bean id="proxyFactory"
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="${wsdl.url}"/>
<property name="address" value="${wsdl.url}"/>
<property name="username" value="${webservice.username}"/>
<property name="password" value="${webservice.password}"/>