• Spring boot caching example


    spring cache API

    1. Types of cache

    1.1 In-memory caching 如 redis。

    1.2 database caching 如 hibernate cache。

    2. Spring boot cache annotations

    initialize your project https://start.spring.io/

    2.1 Create HTTP GET REST API

    Student.java

    package com.example.springcache.domain;
     
    public class Student {
     
        String id;
        String name;
        String clz;
     
        public Student(String id, String name, String clz) {
            super();
            this.id = id;
            this.name = name;
            this.clz = clz;
        }
     
        //Setters and getters //注意把set和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 感受一下缓存的效果。

  • 相关阅读:
    A Simple Problem About Truth Table
    Android Fragment完全解析,关于碎片你所需知道的一切
    Android系统中标准Intent的使用
    Android应用开发全程实录-你有多熟悉listView
    Android四大基本组件介绍及生命周期
    设计模式
    Java流(Stream)、文件(File)和IO
    Java网络编程详解
    Java 多线程
    深入理解Java虚拟机 精华总结(面试)
  • 原文地址:https://www.cnblogs.com/chenqr/p/11144882.html
Copyright © 2020-2023  润新知