2
私はキャッシュを挿入するコンストラクタを持つコントローラを持っていますが、インスタンスの作成時にコンストラクタ内のメソッドを呼び出すこともしたいと思います。コンストラクタの呼び出しメソッド
def this(foo:Foo){}
私の場合は、私のブートストラップのインスタンスが少し複雑であるため、私の場合は補助フレームワークを作成することができます。
ここで私が望む何を私のコード
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)
}
}
は、クラスをインスタンス化するときにloadGameIdsが呼び出され、キャッシュされるだろうということです。
提案がありますか?
よろしくお願いいたします。
ありがとう、私はオブジェクトinit {loadGameIds}を試していましたが、何もありませんでした。それは私が読んだブログではそれを学んでいないという不思議なことです。 – paul