Ich habe einen Controller mit einem Konstruktor, wo ich einen Cache injiziere, aber ich möchte auch eine Methode im Konstruktor aufrufen, wenn die Instanz erstellt wird. Ich weiß, dass wir einigen Hilfsbauer mitCall-Methode im Konstruktor
def this(foo:Foo){}
Aber in meinem Fall schaffen können, weil das eine Spiel-Framework, das Beispiel meiner Bootstrap ein wenig komplexer sind.
Hier mein Code
class SteamController @Inject()(cache: CacheApi) extends BaseController {
private val GAME_IDS_LIST_API: String = "api.steampowered.com/ISteamApps/GetAppList/v2"
private val GAME_API: String = "store.steampowered.com/api/appdetails?appids="
private val GAME_KEY: String = "games"
def games = Action { implicit request =>
var fromRequest = request.getQueryString("from")
if (fromRequest.isEmpty) {
fromRequest = Option("0")
}
val from = Integer.parseInt(fromRequest.get) * 10
val to = from + 10
loadGameIds()
Ok(html.games(SteamStore.gamesIds(cache.getVal[JSONArray](GAME_KEY), from, to), cache.jsonArraySize(GAME_KEY)/10))
}
private def loadGameIds(): Unit = {
val games = cache.get(GAME_KEY)
if (games.isEmpty) {
get(s"$GAME_IDS_LIST_API", asJsonGamesId)
cache.set(GAME_KEY, lastResponse.get, 60.minutes)
}
}
Was würde Ich mag ist, dass loadGameIds aufgerufen werden würde und zwischengespeichert, wenn die Klasse instanziiert wird.
Irgendwelche Vorschläge?
Grüße.
Vielen Dank Ich habe versucht Objekt init {loadGameIds} aber nichts. Das ist seltsam, dass ich das in keinem Blog, den ich gelesen habe, gelernt habe. – paul