2015-09-15 16 views
13

Uygulama başladığında konsola "Hello" yazdırmaya çalışıyorum. Nasıl yapılacağını açıklayabilir misin?Oyunda başlangıçta kod nasıl çalıştırılır! çerçeve 2.4

kendimi denedim Ne:

app/modules/HelloModule.scala: conf/application.conf yılında

package modules 

import com.google.inject.AbstractModule 

trait Hello {} 

class MyHelloClass extends Hello { 
    initialize() // running initialization in constructor 
    def initialize() = { 
    println("Hello") 
    } 
} 

class HelloModule extends AbstractModule { 
    def configure() = { 
    bind(classOf[Hello]) 
     .to(classOf[MyHelloClass]).asEagerSingleton 
    } 
} 

i ekledi:

play.modules.enabled += "modules.HelloModule" 

ve "Merhaba" i çalıştırdığınızda baskılı edilmez activator run

+0

"Merhaba" ilk isteğin alındığında görüntülenen mı içinde "Merhaba" cevapsız olabilir? Dev modunda, ilk istek gelene kadar tembel olarak uygulamayı başlatın. Btw sadece yazabilirsiniz (classOf [MyHelloClass]). AsEagerSingleton'. Aktivatör çalıştırıldıktan sonra –

+1

localhost talep ediyorum: 9000/books (basit-dinlenme-scala aktivatör şablonu) ve "Hello" görüntülenmiyor – dziablo

+0

Bu https://stackoverflow.com/questions/36453955/how-do-i adresine bakın. -Satışta-sunucu-başlangıç-in-the-scala-oyun-çerçeve – Programmer

cevap

5

You Global object ve ov kullanmanız gerekir erride "onStart" yöntemi:

projenizde Küresel nesneyi tanımlama uygulamanız için küresel ayarlarını işlemesine olanak tanır. Bu nesne varsayılan (boş) paketinde tanımlanmalı ve GlobalSettings'i genişletmelidir.

import play.api._ 

object Global extends GlobalSettings { 

    override def onStart(app: Application) { 
    Logger.info("Application has started") 
    } 

    override def onStop(app: Application) { 
    Logger.info("Application shutdown...") 
    } 

} 

Ayrıca application.global yapılandırma anahtarı kullanarak özel GlobalSettings uygulama sınıfı adını belirtebilirsiniz.

Güncelleme:

doğru yolu söz konusu aynen anlatıldığı gibi, Bağımlılık Ekleme özelliğini kullanmak olacaktır. GlobalSettings could be removed later

Sorudaki kodla ilgili bir sorun yok. Yerel kurulumumda doğruladım. Kod, "aktivatör çalışması" geliştirme modunda ilk istemin ardından "Merhaba" yazıyor ve uygulamadan sonra "aktivatör başlat" üretim modundan başlıyor.

Btw gibi, günlüğüne dizesini bulmak için biraz daha kolay kullanmayı deneyin

"-------- APP DZIABLO -------- başladıktan"

O yüzden sadece log (ı baştan tanımadı)

enter image description here

+0

Çalışır, teşekkür ederim, ama Küresel nesne yerine bağımlılık enjeksiyonu nasıl kullanılacağı rehber olduğunda GlobalSettings kullanmalıyız? [link] (https://www.playframework.com/documentation/2.4.x/GlobalSettings) Yani, gelecekte kullanımdan kaldırılmayacak mı yoksa çerçeveden kaldırılmayacak mı? – dziablo

+0

DI'yi kullanmanız gerektiğinden emin olmak için, GlobalSettings uygulama başlangıcında "yazdırmak için" Merhaba "uygulamasının en kolay yoludur" –

+0

@dziablo - güncellememe bakın lütfen. Kodunuzda herhangi bir sorun görmüyorum.Kendi yerel projemde doğrulama yaptım –