복붙노트

[SPRING] 구성 파일에서 동적으로 값을 전달하는 방법

SPRING

구성 파일에서 동적으로 값을 전달하는 방법

DB에서 동적으로 속성 값 태그의 값을 전달하고 싶습니다. Spring에서도 가능합니까? 그리고 어떻게 ?

아래 구성 예를 들어.

<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에 대해 위에서 언급 한 속성, 즉 를 DB에서 가져 와서 여기에 동적으로 전달하려고합니다.

해결법

  1. ==============================

    1.다른 Java 클래스를 작성하여 Application 컨텍스트에서 bean으로 만들 수 있으며 Spring Expression Language를 사용하여 메소드 호출을 평가하고 출력을 얻을 수있다.

    다른 Java 클래스를 작성하여 Application 컨텍스트에서 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>
    
  2. ==============================

    2.키 - 값 쌍이 포함 된 속성 파일 이름으로 속성 Place Holder를 설정할 수 있습니다.

    키 - 값 쌍이 포함 된 속성 파일 이름으로 속성 Place Holder를 설정할 수 있습니다.

    config.properties 파일은 다음과 같습니다.

    wsdl.url = http://server:8080/ServiceAccessPoint
    webservice.username = guest
    webservice.passward = guest123
    

    이제 $ {key}로 빈 정의를 수정할 수있다.

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

  3. from https://stackoverflow.com/questions/17186789/how-to-pass-values-dynamically-in-config-file by cc-by-sa and MIT license