我目前正在使用spring.net在.net项目c#上进行依赖注入。我正在通过xml配置文件配置我的spring。在这里,我正在创建我的对象等。
我想创建一个常量对象,在我的xml文件中包含字符串值。这是可能的,如果是这样,我怎么能实现这个目标?我想继续在多个地方使用这个值,因此我采用这种方法。
答案 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样式属性文件。