春のキャッシュAPI
キャッシュの1種類
1.1インメモリキャッシュ如のRedisの。
1.2データベースのキャッシュ如の休止キャッシュ。
2.春のブートキャッシュ注釈
あなたのプロジェクトが初期化https://start.spring.io/
2.1作成HTTP GET REST API
Student.java
パッケージcom.example.springcache.domain。
パブリッククラス学生{
文字列ID;
文字列の名前。
文字列のCLZ。
公共学生(文字列ID、文字列名、文字列CLZ){
スーパー()。
this.id = ID。
this.name =名前;
this.clz = CLZ。
}
//セッターとゲッター//注意把セット和GET方法加上
}
StudentService.java
package com.example.springcache.service;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.example.springcache.domain.Student;
@Service
public class StudentService
{
@Cacheable("student")
public Student getStudentByID(String id)
{
try
{
System.out.println("Going to sleep for 5 Secs.. to simulate backend call.");
Thread.sleep(1000*5);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return new Student(id,"Sajal" ,"V");
}
}
StudentController.java
package com.example.springcache.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import com.example.springcache.domain.Student; import com.example.springcache.service.StudentService; @RestController public class StudentController { @Autowired StudentService studentService; @GetMapping("/student/{id}") public Student findStudentById(@PathVariable String id) { System.out.println("Searching by ID : " + id); return studentService.getStudentByID(id); } }
Note:
- service层方法用
@Cacheable("student")
,用于cache学生信息。
2.2 Enable Spring managed Caching
SpringCacheApplication.java
package com.example.springcache;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
public class SpringCacheApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCacheApplication.class, args);
}
}
2.3 Demo test
http://localhost:8080/student/1
通过变换id,http://localhost:8080/student/2
感受一下缓存的效果。