我目前正在使用 spring.net 对 .net 项目 c# 进行依赖注入。我正在通过 xml 配置文件配置我的 spring。在这我正在创建我的对象等。
我想在我的 xml 文件中创建一个带有字符串值的常量对象。这可能吗?如果可以,我该如何实现?我想继续并在多个地方使用这个值,因此我采用了这种方法。
我目前正在使用 spring.net 对 .net 项目 c# 进行依赖注入。我正在通过 xml 配置文件配置我的 spring。在这我正在创建我的对象等。
我想在我的 xml 文件中创建一个带有字符串值的常量对象。这可能吗?如果可以,我该如何实现?我想继续并在多个地方使用这个值,因此我采用了这种方法。
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>
其他两个答案为在容器中配置字符串对象提供了合理的解决方法。
如果您希望在配置文件中重用字符串常量,那么最好使用VariablePlaceholderConfigurer
. 然后你可以编写你的配置文件,如:
<object id="JohnUsingVariableSource"
type="XmlConfig.StringInjection.Person, XmlConfig">
<property name="Name" value="${JohnsFullName}" />
</object>
占位符的值${JohnsFullName}
可以从许多变量源配置,例如appSettings
app.config 中的部分或 Java 样式属性文件。
我建议将此字符串封装为类的只读字段,然后使用 Spring(或其他读者使用的任何 IoC)将该类注册为单例范围。
这样做的好处是您不必尝试解析字符串对象;您解析包含字符串的对象(因此允许您拥有许多此类包含字符串的对象)。
如果你真的想要,你可以在注册对象时定义特定参数的注入值,使用 constructor-arg 标签;这样,在解析 DatabaseObject 时,当 Spring 遇到名为“connectionString”的构造函数参数时,它应该提供您在 XML 中指定的特定文字。更多阅读玫瑰印度。