2015-05-22 15 views
7

Play 2.4 programını kullanıyorum. Yeni dinamik bağımlılık enjeksiyon oynatma özelliğini kullanarak kendi sınıfımla varsayılan yönlendiriciyi değiştirmek istiyorum. Bunu yapmak için adımlar nelerdir?Oynatıcıda Özel Yönlendirici 2.4

cevap

3

olası bir çözüm yeni yönlendirici bağlamak, yeni Guice Modülü yaratmak olacaktır: Yeni oluşturulan modül kullanılarak,

class RouterModule extends AbstractModule { 

    override def configure(): Unit = { 
    bind(classOf[Router]).to(classOf[CustomRouter]) 
    } 
} 

Ardından varsayılan yapılandırılmış yönlendirici geçersiz kılar, yeni bir Uygulama Yükleyici, tanımlamak :

class MyApplicationLoader extends GuiceApplicationLoader with GuiceableModuleConversions { 

    override protected def overrides(context: Context): Seq[GuiceableModule] = { 
    Seq(fromGuiceModule(new RouterModule)) ++ super.overrides(context) 
    } 
} 

Ve dosyasına koyarak içinde, yerine varsayılan biri, yeni oluşturulan uygulama yükleyici kullanın:

play.application.loader = "de.zalando.store.pdp.modules.MyApplicationLoader" 
+0

https://www.playframework.com/documentation/2.4.x/ScalaRouting başına: sbt dosyasında aşağıdaki ifadeyi eklemeniz gerekir:; yollarıGenerator: = EnjekteRoutesJenerator? Özel rotanın gerçekten nasıl yazıldığına dair doktora işaret edebilir misiniz? Bağladığım dokümana sahip değil. – 0fnt

+0

IMHO, enjekte edilen bağımlılıkları değiştirmek için "Bileşenler" in (https://www.playframework.com/documentation/2.4.x/ScalaCompileTimeDependencyInjection) yararına olabilir. Böylelikle yeni ApplicationLoader'ı yazmanız yeterli, application.conf dosyasında buna başvurmalısınız. Guice modülünü yazmaya gerek yok. MessageApi'yi değiştirmek istiyorsanız aynı şey – iwalktheline