Переопределить свойство по умолчанию другим файлом свойств во время выполнения

Допустим, у меня есть следующие файлы свойств:

service.properties service1.properties service2.properties

Мое приложение будет выполнять множество сервисных вызовов и будет использовать файл свойств по умолчанию (service.properties). Однако я хотел бы переопределить его с помощью service1.properties, когда service1 совершает вызов. Точно так же service2.properties должны переопределять вызов service2.

Для остальных вызовов службы я все же хотел бы использовать service.properties.

Любые указатели относительно того, как я должен это делать.


person user2989124    schedule 05.08.2015    source источник


Ответы (1)


<bean id="service" class="com.concept.testing.Service">
<property name="url" value="${url.property}" />
<property name="user" value="${user.property}" />
<property name="password" value="password" />
<property name="app" value="Application" />
</bean>

Ваш сценарий имеет для меня смысл только вышеприведенного сценария, где вы хотите сказать, что используете метод класса Service, несколько свойств которого являются постоянными, и некоторые из них необходимо динамически вводить из файла свойств. Поскольку класс одинаков для всех вызовов службы, вы не хотите определять разные свойства и bean-компоненты для службы1 и службы2.

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

<bean id="service1" parent="service">
<property name="url" value="${url1.property}" />
<property name="user" value="${user1.property}" />
</bean>

<bean id="service2" parent="service">
<property name="url" value="${url2.property}" />
<property name="user" value="${user2.property}" />
</bean>

Итак, теперь вы можете внедрить bean-компонент service1 для вызова service1 и bean-компонент service2 для вызова service2. Их родительский класс такой же, но единственная разница заключается в их конфигурации (т.е. URL и имя).

person Amit Bhati    schedule 05.08.2015
comment
Спасибо за ответ Амит. Но, как вы видите, у меня есть несколько файлов свойств переопределения (service1.properties, service2.properties ..). Только в сценарии, когда я делаю вызов service1, я хотел бы переопределить его с помощью service1.properties. - person user2989124; 05.08.2015
comment
Почему именно вам нужно, чтобы свойства переопределялись во время выполнения? Это похоже на то, что вы хотите повторно использовать bean-компонент, определенный в xml, и просто хотите настроить его во время выполнения? - person Amit Bhati; 05.08.2015
comment
Я хочу, чтобы это было во время выполнения, так как на основе логики приложения я мог бы сделать либо вызов service1, либо вызов service2, либо и то, и другое. В зависимости от сделанного служебного вызова я хочу предоставить файл переопределения. - person user2989124; 05.08.2015
comment
Проверьте мой ответ, надеюсь, это даст вам представление. Значения из файлов свойств вводятся только во время инициализации контекста пружины, как только это будет сделано. Вы не можете повторно загрузить одни и те же значения. - person Amit Bhati; 05.08.2015