Оставляя <constructor-arg /> в рамках Spring, когда есть значение параметра по умолчанию - PullRequest
1 голос
/ 01 июня 2011

У меня есть следующий простой конструктор:

public SimpleClass(Type1 arg1, int interval = 1000)
{ ... }

Я инициализирую это с помощью пружинного каркаса следующим образом, без использования autowire:

<object name="SimpleClass" type="..., ...">     
    <constructor-arg name="arg1" ref="..." />
    <constructor-arg name="interval" value="1000" />    
</object>

У меня такой вопрос: так как я определяю значение по умолчанию для второго параметра в фактическом конструкторе, могу ли я оставить его вне конфигурационного файла Spring, или Spring требует явного объявления для всех параметров, если вы этого не сделаете использовать autowire? Есть ли смысл оставлять здесь значение параметра по умолчанию, так как я использую spring?

1 Ответ

1 голос
/ 01 июня 2011

Это не работает при использовании конфигурации xml (протестировано с Spring.NET 1.3.1).

Возможно, он работает при использовании CodeConfig , но я не пробовал.

Самый быстрый обходной путь - это просто ввести второго конструктора в вашем классе:

Class SimpleClass
{
  public SimpleClass(Type1 arg1) : this(arg1, 1000)
  {}

  public SimpleClass(Type1 arg1, int interval = 1000)
  { 
    // ...
  }
}

Это всегда будет работать.

...