Подтвердить что ты не робот

Определить строку в контексте spring

У меня есть три (A, B, C) spring context.xml, A для базовой конфигурации, B и C импортируют A.

В bean на A я:

<bean class="com.example.Ex">
    <property name="aString" value="${myString}" />
</bean>

теперь я хочу определить свойство myString в контексте B и C, возможно ли это сделать без создания и загрузки двух разных файлов свойств?

4b9b3361

Ответ 1

Вы можете попробовать альтернативный способ, объявив bean типа String вместо обращения к свойствам.

Таким образом:

А

<bean class="com.example.Ex">
    <property name="aString" ref="str" />
</bean>

И затем вы объявляете в своих B и C контекстах ссылку "str" следующим образом:

В

<bean id="str" class="java.lang.String">
  <constructor-arg value="string_1"/>
</bean>

С

<bean id="str" class="java.lang.String">
  <constructor-arg value="string_2"/>
</bean>

Ответ 2

Для полноты здесь другой способ создания строки:

Вместо вызова конструктора String, который принудительно создает новый объект, может быть лучше использовать метод valueOf, который здесь может служить конструктором "ничего не делать":

<bean id="str" class="java.lang.String" factory-method="valueOf">
  <constructor-arg value="string_1"/>
</bean>

Однако это только академично, поскольку накладные расходы на разбор дополнительных атрибутов XML, которые вызовут создание строк, также могут быть больше, чем увеличение производительности вызова valueOf вместо конструктора.

Ответ 3

Это тоже один из способов.

<bean id="str" class="com.example.Ex">
<constructor-arg type="java.lang.String" value="INDIA"/>