我有以下简单的构造函数:
public SimpleClass(Type1 arg1, int interval = 1000)
{ ... }
我使用spring框架初始化如下,不使用autowire
:
<object name="SimpleClass" type="..., ...">
<constructor-arg name="arg1" ref="..." />
<constructor-arg name="interval" value="1000" />
</object>
我的问题是:由于我在实际构造函数中为第二个参数定义了一个默认值,我可以将它从spring配置文件中删除,或者如果不这样做,spring是否需要对所有参数进行显式声明使用autowire
?在这里留下默认参数值是否有任何意义,因为我正在使用spring?
答案 0 :(得分:1)
使用xml配置时无效(使用Spring.NET 1.3.1测试)。
使用CodeConfig时可能会有效,但我还没有尝试过。
最快的解决方法是在您的班级中简单地引入第二个构造函数:
Class SimpleClass
{
public SimpleClass(Type1 arg1) : this(arg1, 1000)
{}
public SimpleClass(Type1 arg1, int interval = 1000)
{
// ...
}
}
这将始终有效。