Определить строку в контексте 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, возможно ли это сделать без создания и загрузки двух разных файлов свойств?
Ответы
Ответ 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"/>