1

В настоящее время я работаю с spring.net для инъекций зависимостей .net проекта C#. Я настраиваю свою пружину через файлы конфигурации xml. В этом я создаю свои объекты и т. Д.создание строкового объекта с spring.net

Я хотел бы создать постоянный объект со строковым значением в моем XML-файле. Возможно ли это, и если да, то как я могу это достичь? Я хочу продолжить и использовать это значение в нескольких местах, поэтому я придерживаюсь такого подхода.

ответ

4

MyString является синглтоном, из-за весенние объекты являются синглтоном по умолчанию

<object id="MyString" type="System.String" factory-method="Copy"> 
    <constructor-arg index="0"> 
    <value>SomeStringValue</value> 
    </constructor-arg> 
</object> 

Вот как ссылаться MyString:

<object id="SomeObj" type="ExampleSpring.SomeObj, ExampleSpring"> 
    <property name="Str" ref="MyString" /> 
</object> 
+0

+1, никогда не думал об этом раньше – Marijn

0

Я бы рекомендовал инкапсулировать эту строку как поле readonly класса, а затем зарегистрировать класс с Spring (или любым другим IOC другим читателем) в качестве Singleton-scoped.

Преимущество этого в том, что вы не вынуждены пытаться разрешить строковый объект; вы разрешаете объект, содержащий строку (таким образом, вы можете иметь много таких объектов, содержащих строку).

Если вы действительно захотите, вы можете определить значения инъекций, специфичных для параметра, при регистрации объекта, используя тэг constructor-arg; Таким образом, при решении DatabaseObject, когда Spring встречает параметр конструктора с именем «connectionString», он должен предоставить конкретный литерал, который вы указываете в XML. Больше информации на Rose India.

0

Других два ответов дают разумные обходные пути для конфигурирования строковых объектов в контейнер.

Если вы хотите повторно использовать константу строки в своих конфигурационных файлах, то вам лучше использовать VariablePlaceholderConfigurer. После этого вы можете написать свой конфигурационный файл, как:

<object id="JohnUsingVariableSource" 
     type="XmlConfig.StringInjection.Person, XmlConfig"> 
    <property name="Name" value="${JohnsFullName}" /> 
</object> 

Значение для ${JohnsFullName} заполнителя может быть сконфигурировано из многих variable sources, такие как appSettings секция в app.config или стиле Java файл свойства.

Смежные вопросы