【问题标题】:how to pass values dynamically in config file如何在配置文件中动态传递值
【发布时间】:2013-06-15 17:23:52
【问题描述】:

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

例如在下面的配置中。

<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 为 "proxyFactory" 的 bean 的属性,即 &lt;WSDLURL&gt;&lt;username&gt;&lt;password&gt; 从数据库中获取并在此处动态传递。

【问题讨论】:

    标签: database spring dynamic properties configuration


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

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

      &lt;context:property-placeholder location="config.properties" /&gt;

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

      【讨论】:

      • 嗨 manjunath .. 谢谢,但正如我所提到的和 @Betlista 重新声明的那样.. 我想从 DB 获得它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2019-07-12
      • 1970-01-01
      • 2020-01-01
      • 2013-04-09
      • 2020-02-18
      • 1970-01-01
      相关资源
      最近更新 更多