Передача во время выполнения известных vaues конструктору, вызываемому Spring - PullRequest
0 голосов
/ 06 июня 2011

Я создаю экземпляр объекта (стороннего, поэтому я не могу его изменить), конструктор которого берет IP-адрес, который не известен до времени выполнения.Поэтому я не могу / не могу жестко закодировать IP-адрес в конфигурационный файл Spring.

Итак, как я могу использовать Spring для создания экземпляра этого класса, если значение одного из его аргументов неизвестно до времени выполнения?

1 Ответ

0 голосов
/ 06 июня 2011

Вы можете использовать файл конфигурации, используя пространство имен util :

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
   ...
   <bean id="baseObject" class="...">
      <constructor-arg>
          <util:property-path path="propertyReader.runtimePropertyValue"/>
      </constructor-arg>
   </bean>

   <bean id="propertyReader" class="PropertyReader"/>
   ...
</beans>

Тогда в Java вы получите

public class PropertyReader {
   ...
   public String getRuntimePropertyValue() {
       // Retrieve and return property value
   }     
   ...
}

Как видите, Spring вводит значения автоматически.Вам просто нужно реализовать PropertyReader (имя класса не имеет значения), который предоставляет введенные значения.

...