Skip to main content

Springbootでキャッシュを使ってみた

季節は春が好きなマスタカです
今回はSpringbootにキャッシュを入れてみた


・gradle

implementation("org.springframework.boot:spring-boot-starter-cache")

 

・Application

@EnableCaching
@SpringBootApplication
class MasterkaApplication

fun main(args: Array<String>) {
	runApplication<MasterkaApplication>(*args)
}

 

・Controller

@RestController
class RestAPiController(val service: MasterkaService) {

    @GetMapping("/get")
    fun getApi(): DummyResponse {
        return service.getApi()
    }
}

 

・Service

interface MasterkaService {
    fun getApi(): DummyResponse
}

@Service
class MasterkaServiceImpl : MasterkaService {

    @Cacheable("getApi")
    override fun getApi(): DummyResponse {
        Thread.sleep(2000L)
        return DummyResponse("masterka")
    }
}
data class DummyResponse(val message: String)

sleep2秒してるので初回のレスポンスだけすごく遅い。
ただし2回目からはキャッシュが乗るので爆速になる
キャッシュがのると@CcaheableになってるgetApiは呼ばれずに以前に返却した値が返る
デフォルトのCacheはConcurrentHashMap
設定変えるとキャッシュ対象を変えれる
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-caching

 

試しにやってみましたが、ものすごい楽にキャッシュ入れれてびっくりしました
これ使って爆速にしていきたいと思います
まだまだ勉強は続くよ

参考
https://spring.io/guides/gs/caching/

関連記事:

Pocket