2014-01-02 4 views
6

Я использую Guice в своем приложении довольно много. Недавно я начал изучать акак актеров и чувствовал, что рефакторинг моего приложения с ним.Зависимость впрыска с Akka

Однако я заранее задаюсь вопросом, как все мои губы будут работать с актерами. Я продолжал искать в Google, и это немного грязно.

Наиболее до даты документы, которые я нашел на эту тему являются тезисы:

http://letitcrash.com/post/55958814293/akka-dependency-injection

http://eng.42go.com/tag/guice/

, которые не выступают за то же самое.

Должен признаться, мне все еще нужно много читать, я в начале изучения акки. Я сделал несколько примеров и несколько красных вещей, но я не хочу углубляться во что-то, чтобы понять позже, что у меня будет много проблем.

Итак, мой вопрос на сегодня, каков консенсус в отношении того, как использовать Акку Актеры с инъекцией зависимости.

Какая инъекция возможна? Можем ли мы провести проводку актеров с объектом/другими актерами/....

В любом случае, пожалуйста, кратко сформулируйте что-то, что может помочь мне понять, что возможно, и какие лучшие практики?

ответ

1

Последний активатор учебник для Akka with Guice ,

+0

К сожалению, для Scala - не для Java. Но, к счастью, есть пример для Akka с Guice и Java: https://github.com/mohitarora/akka-guice-di/blob/7b606f03dea3c912abc7cbf8a8b10747f525bb97/src/main/java/com/sample/MasterActor.java – Kris

5

Я знаю, что вы работаете в Акке с Guice и Scala, но Typesafe предоставляет tutorial, описывающий, как все работает в Akka с Spring и Java. Это может послужить хорошей отправной точкой для понимания того, как инъекция зависимостей вписывается в жизненный цикл Actor для вашей ситуации.

Между тем, вот некоторые примеры кода из их documentation для использования фабричный метод, чтобы ввести аргументы конструктора:

class DependencyInjector(applicationContext: AnyRef, beanName: String) extends IndirectActorProducer { 
    override def actorClass = classOf[Actor] 
    override def produce = // obtain fresh Actor instance from DI framework ... 
} 
val actorRef = system.actorOf(Props(classOf[DependencyInjector], applicationContext, "hello"), "helloBean") 

Here некоторые рекомендации, составленные типизированного по этому вопросу.

Наконец, обратите внимание на следующее из документации: «При использовании рамки инъекции зависимостей, актер фасоль НЕ ДОЛЖЕН иметь одноплодный объем»

+0

Все большое спасибо. – MaatDeamon

+0

@MaatDeamon - вам удалось заставить это работать с Guice? Я борюсь с той же проблемой, и мой вопрос был отмечен как дубликат. Меня особенно интересует ваш Guice, связанный с этим продюсером, поскольку я не могу получить этот бит для работы с этим примером. – matthewrk

Смежные вопросы