使用spring.net创建一个字符串对象

时间:2012-08-28 16:46:52

标签: c# string dependency-injection inversion-of-control spring.net

我目前正在使用spring.net在.net项目c#上进行依赖注入。我正在通过xml配置文件配置我的spring。在这里,我正在创建我的对象等。

我想创建一个常量对象,在我的xml文件中包含字符串值。这是可能的,如果是这样,我怎么能实现这个目标?我想继续在多个地方使用这个值,因此我采用这种方法。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我建议将此字符串封装为类的只读字段,然后将该类注册为Spring(或其他任何读者使用的IoC)作为singleton-scoped。

这样做的好处是你不会被迫尝试解析一个字符串对象;你解决了包含字符串的对象(从而允许你有许多这样的包含字符串的对象)。

如果您真的想要,可以使用constructor-arg标记在注册对象时定义特定于参数的注入值;这样,当解析DatabaseObject时,当Spring遇到名为“connectionString”的构造函数参数时,它应该提供您在XML中指定的特定文字。更多阅读Rose India

答案 2 :(得分:0)

其他两个答案为在容器中配置字符串对象提供了合理的解决方法。

如果您希望在配置文件中重复使用字符串常量,那么您最好使用VariablePlaceholderConfigurer。然后你可以编写你的配置文件,如:

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

${JohnsFullName}占位符的值可以从许多variable sources配置,例如app.config中的appSettings部分或Java样式属性文件。