2015-08-10 28 views

cevap

6

Play tarafından kullanılan varsayılan yöntem olduğundan, çalışma zamanı DI'si hakkında Guice ile konuşuyorum. Diğer DI yöntemleri veya çerçeveleri burada farklı olabilir.

Bir özellik bir bağımlılık enjekte etmek mümkün değildir, çünkü bir özellik somutlaşabilir değildir. Bir özellik bağımlılıkları tanımlamak için bir kurucuya sahip değildir.

Oynatımda enjektörü, Application özelliğinin kapsam dahilinde olduğu sürece kullanabilirsiniz. Ancak bu, üretim kodunda iyi uygulama olarak görülmemektedir. Test kodunda bu bir seçenek olurdu. Üretim kodunda Yani

class MySpec extends PlaySpecification { 
    "My test" should { 
    "Use the injector" in new WithApplication extends Context { 
     val messages = Messages(Lang("en-US"), messagesApi) 
    } 
    } 

    trait Context extends Scope { 
    self: WithApplication => 

    val messagesApi = app.injector.instanceOf[MessagesApi] 
    } 
} 
+7

ne * olduğunu * iyi, önerilen yöntem, örneğin bir "Güvenli" özellikte "AuthService" kullanmaları gerektiğinde: http://stackoverflow.com/q/34223440/ 56285 – Jonik

İlgili konular