0

我想从数据库动态传递属性值标签中的值。这在春天可能吗?如何 ?

例如在下面的配置中。

<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>

我希望上面提到的带有 id 的 bean 的属性"proxyFactory",即<WSDLURL><username><password>从数据库中获取并动态传递到这里。

4

2 回答 2

1

您可以编写另一个 Java 类并将其作为应用程序上下文中的 bean 并使用 Spring 表达式语言,您可以评估并获取方法调用的输出。

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>
于 2013-06-19T12:01:00.450 回答
-1

您可以使用包含键值对的属性文件名设置属性占位符。

<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}"/>

于 2013-06-19T09:17:41.167 回答