Контейнер IoC, который поддерживает внедрение конструктора с именованными аргументами Scala / default? - PullRequest
4 голосов
/ 11 марта 2011

Я бы предпочел использовать внедрение конструктора, а не внедрение свойства JavaBean, если бы я мог использовать функцию именованных и стандартных аргументов в Scala 2.8. Существуют ли IoC-контейнеры, которые поддерживают это или могут быть легко расширены для этого? (Необходимая информация находится во время выполнения в аннотации scala.reflect.ScalaSignature класса.)

У меня также есть некоторые основные (?) Ожидания от контейнера IoC:

  • Автоматическое подключение (по целевому классу / признаку или аннотации, как один к одному и один ко многим)
  • Явная инъекция (явная разводка) без особых хлопот (как, например, там слабый Guice) Как user вводится таким образом в new ConnectionPool(user="test").
  • Обратный вызов жизненного цикла для очистки при завершении работы (в правильном порядке)

Spring может делать это, конечно, но он не поддерживает именованные параметры. Я рассмотрел возможность использования FactoryBean -s для соединения Scala и Spring, но это, на мой взгляд, означало бы слишком много хлопот (шаблон или генерация кода).

Ответы [ 4 ]

3 голосов
/ 11 марта 2011

ЧАСТЬ A

У меня есть библиотека отражений в процессе работы, которая анализирует подпись Scala и в настоящее время может разрешать именованные параметры: https://github.com/scalaj/scalaj-reflect

К сожалению, я невсе же привязал его обратно к Java-отражению, чтобы можно было вызывать методы, и я не добавил логику для разрешения значений по умолчанию (хотя это должно быть тривиальным).Обе функции очень важны в моем списке дел:)

Это не контейнер IoC как таковой, но это предварительное условие для другого моего проекта: https://github.com/scalaj/scalaj-spring. Работа надscalaj-spring прекратился, когда стало ослепительно очевидно, что я не смогу добиться какого-либо достойного дальнейшего прогресса, пока у меня не появится сигнатурное отражение.

ЧАСТЬ B

Все эти вещив любом случае предназначен для крупных предпринимателей.Те, у кого нет выбора, кроме как интегрировать свой новый блестящий код Scala в некую громоздкую унаследованную систему ... Если это не ваш вариант использования, то вы можете просто сделать Scala DI непосредственно внутри Scala.

В DI предусмотрена поддержка DI.Поднимите баннер: http://www.assembla.com/wiki/show/liftweb/Dependency_Injection

Вы также должны охотиться вокруг для ссылок на образец пирога

2 голосов
/ 10 августа 2011

Еще одна структура внедрения зависимостей в Scala - это subcut

1 голос
/ 10 августа 2011

Я только что выпустил Sindi, контейнер IoC для языка программирования Scala.

http://aloiscochard.github.com/sindi/

1 голос
/ 10 июля 2011

Я рассмотрел использование FactoryBean-ов для соединения Scala и Spring, но это означало бы слишком много хлопот

Я не уверен, что понимаю сложность.На самом деле реализовать Spring FactoryBeans в Scala довольно просто.Проверьте эту небольшую рецензию http://olegzk.blogspot.com/2011/07/implementing-springs-factorybean-in.html

...