1

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

我想在我的 xml 文件中创建一个带有字符串值的常量对象。这可能吗?如果可以,我该如何实现?我想继续并在多个地方使用这个值,因此我采用了这种方法。

4

3 回答 3

4

MyString 是单例的,因为 spring 对象默认是单例的

<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>
于 2012-08-29T05:08:04.407 回答
0

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

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

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

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

于 2012-08-29T07:51:43.507 回答
0

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

这样做的好处是您不必尝试解析字符串对象;您解析包含字符串的对象(因此允许您拥有许多此类包含字符串的对象)。

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

于 2012-08-28T16:51:33.183 回答