zoukankan      html  css  js  c++  java
  • 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 感受一下缓存的效果。

  • 相关阅读:
    DataTable.AcceptChanges方法有何用处
    ItemArray DataRow对象的RowState和DataRowVersion属性特点
    C#中MessageBox用法大全(附效果图)
    tp5数据库操作 模型层
    07-11 Linux命令操作
    Thinkphp模板标签if和eq的区别和比较
    TP3.2单字母函数
    0629-TP整理四(create(),success(),error(),U())
    0627-TP整理三(对表的操作,数据的显示)
    0626-TP整理二(调试模式,空操作,跨控制器调用,跨方法跳转--redirect(),框架语法,创建model模型)
  • 原文地址:https://www.cnblogs.com/chenqr/p/11144882.html
Copyright © 2011-2022 走看看