欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot默認(rèn)文件緩存(easy-captcha?驗(yàn)證碼)

 更新時(shí)間:2023年06月19日 10:19:39   作者:A黃俊輝A  
這篇文章主要介紹了springboot的文件緩存(easy-captcha?驗(yàn)證碼),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

springboot使用緩存的方法 (這里我們來說使用 springboot 默認(rèn)的文件緩存)

其實(shí) springboot 使用了 CatchManager 來管理緩存,有了它, 我們就可以緩一的使用各種各樣的緩存, 比如 ConcurrentCatchMap redis 等緩存, 它們的使用方法都是一樣的

用法

1.引入

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
            <version>....</version>
</dependency>

2.yml 中配置

spring:
  cache:
    cache-names: [ huang,cache2 ]   //給緩存配置一個(gè)名稱

3.開啟緩存
在任何一個(gè) springboot 中的一個(gè)配置類上 ,加上注解 @EnableCaching

4.使用
可以使用注解的方式使用緩存, 很方便, 網(wǎng)上也有很多的使用方法, 這里就不多說了, 這里說一下,手動(dòng)的存入緩存,并使用一方法
比如, 我們要給前端一個(gè)驗(yàn)證碼, 并在前端提交時(shí)驗(yàn)證驗(yàn)證碼是否正確, 使用了 easy-captcha

  <dependency>
            <groupId>com.github.whvcse</groupId>
            <artifactId>easy-captcha</artifactId>
            <version>1.6.2</version>
        </dependency>

引入 easy-captcha

package com.huang.test.captcha.controlloer;
import com.huang.test.captcha.common.R;
import com.wf.captcha.SpecCaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collection;
import java.util.UUID;
@RestController
@RequestMapping("/demo")
public class DemoController {
    @Autowired
    private CacheManager cacheManager;
    @GetMapping("/getCaptcha")
    public R getCaptcha(){
        SpecCaptcha specCaptcha = new SpecCaptcha(130, 80, 5);   //新建一個(gè)驗(yàn)證碼類
        String verCode = specCaptcha.text().toLowerCase();		//生成驗(yàn)證碼字符
        System.out.println(verCode);
        String key = UUID.randomUUID().toString();		//為驗(yàn)證碼生成一個(gè)key , 這個(gè)key 是要返回給前端的
        System.out.println(cacheManager);
        //Collection<String> cacheNames = cacheManager.getCacheNames();
        //System.out.println(cacheNames.size());
        //for (String cacheName : cacheNames) {
         //   System.out.println(cacheName);
        //}
        Cache codeCache = cacheManager.getCache("huang");   //我們?cè)趛ml中 配置了一個(gè) 名為 huang  的Cache 
        codeCache.put(key,verCode);   //把 key  和  驗(yàn)證碼字符寫入緩存中
        return R.ok().put("key",key).put("imageStr", specCaptcha.toBase64());  返回前端驗(yàn)證碼的圖片
    }
	//這個(gè)方法是 上個(gè)方法中返回給前端的數(shù)據(jù), 通返回的key 來讀取緩存, 及緩存中的數(shù)據(jù)
    @GetMapping("/getCache")
    public R getCache(String key){
        Cache codeCache = cacheManager.getCache("huang");
        String text = (String) codeCache.get(key).get();
        return R.ok().put("code",text);
    }
}

說一個(gè)springboot 緩存的結(jié)構(gòu)
springboot 有一個(gè) CacheManager 管理緩存的對(duì)象,
而 CacheManager 可以管理很多的 Cache 對(duì)象, 只是 每一個(gè)cache 對(duì)象的名稱不同, 上面例子中的yml 中的配置就 配置了兩個(gè)緩存的對(duì)象, 一個(gè)名稱叫做 huang 另一個(gè)叫 cache2, 我們?cè)诖a中, 使用了 huang 緩存來存入數(shù)據(jù)

一個(gè) cacheManager 中可以有 多個(gè) Cache 的對(duì)象,只是它們的名稱不同

上面的緩存沒有過期時(shí)間的方法, 所以 我們要想給緩存加一個(gè)過期時(shí)間, 就需要我們自已來定義一個(gè)緩存的類

創(chuàng)建一個(gè)配置類 把yml中的配置 刪除

package com.huang.test.captcha.config;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.concurrent.ConcurrentMapCache;
import org.springframework.cache.support.SimpleCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashSet;
import java.util.Set;
@Configuration
@EnableCaching
public class CatchConfig {
    @Bean
    public CacheManager cacheManager(){
    	//catcheManager 是一個(gè)接口, 所以我們使用它的  SimpleCacheManager 的子類來創(chuàng)建
        SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
       	//simpleCacheManager 需要指定它所管理的 緩存類 列表,  所以我們這里新建一個(gè) set 且來存放 Cache 緩存類
        Set<Cache> set = new HashSet<>();
        Cache cache = new ConcurrentMapCache("huang");  //創(chuàng)建一個(gè) Cache 的緩存類 注意是 springboot 的緩存類, 不要引錯(cuò)了import org.springframework.cache.Cache;
        Cache cache2 = new ConcurrentMapCache("cache2"); //創(chuàng)建一個(gè) Cache 名為  cache2
        set.add(cache);
        set.add(cache2);
        simpleCacheManager.setCaches(set);   //設(shè)置 緩存管理類,所管理的緩存列表
        return simpleCacheManager;
    }
}

如果我們要自定義 緩存類, 比如給緩存加上過期時(shí)間, 就可以自己寫一個(gè)類去繼承 Cache 接口,并添加一些方法, 來做緩存過期時(shí)間的功能

到此這篇關(guān)于springboot的文件緩存(easy-captcha 驗(yàn)證碼)的文章就介紹到這了,更多相關(guān)springboot easy-captcha 驗(yàn)證碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java解析Excel內(nèi)容的方法

    Java解析Excel內(nèi)容的方法

    這篇文章主要介紹了Java解析Excel內(nèi)容的方法,實(shí)例分析了java解析excel文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 實(shí)例詳解MyBatis-plus自動(dòng)填充功能

    實(shí)例詳解MyBatis-plus自動(dòng)填充功能

    每次對(duì)數(shù)據(jù)進(jìn)行新增、刪除、修改時(shí)都需要對(duì)這些字段進(jìn)行設(shè)置,雖然新增時(shí)間和修改時(shí)間可以使用數(shù)據(jù)庫的時(shí)間,但是新增人和修改人就不能使用這樣的功能,下面小編給大家介紹下MyBatis-plus自動(dòng)填充功能的實(shí)例代碼,感興趣的朋友一起看看吧
    2022-01-01
  • SpringBoot項(xiàng)目訪問任意接口出現(xiàn)401錯(cuò)誤的解決方案

    SpringBoot項(xiàng)目訪問任意接口出現(xiàn)401錯(cuò)誤的解決方案

    今天小編就為大家分享一篇關(guān)于SpringBoot項(xiàng)目訪問任意接口出現(xiàn)401錯(cuò)誤的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java 獲取當(dāng)前設(shè)備的 IP 地址(最新推薦)

    Java 獲取當(dāng)前設(shè)備的 IP 地址(最新推薦)

    Internet 協(xié)議 (IP) 地址可以是連接到 TCP/IP 網(wǎng)絡(luò)的每個(gè)設(shè)備的標(biāo)識(shí)符,該標(biāo)識(shí)符用于識(shí)別和定位中間通信的節(jié)點(diǎn),這篇文章主要介紹了在 Java 中獲取當(dāng)前設(shè)備的 IP 地址,需要的朋友可以參考下
    2023-06-06
  • SpringBoot中TypeExcludeFilter的作用及使用方式

    SpringBoot中TypeExcludeFilter的作用及使用方式

    在SpringBoot應(yīng)用程序中,TypeExcludeFilter通過過濾特定類型的組件,使它們不被自動(dòng)掃描和注冊(cè)為bean,這在排除不必要的組件或特定實(shí)現(xiàn)類時(shí)非常有用,通過創(chuàng)建自定義過濾器并注冊(cè)到spring.factories文件中,我們可以在應(yīng)用啟動(dòng)時(shí)生效
    2025-01-01
  • Springboot程序在使用Maven下載依賴時(shí)失效的解決方法

    Springboot程序在使用Maven下載依賴時(shí)失效的解決方法

    以前能成功創(chuàng)建SpringBoot項(xiàng)目并運(yùn)行,但是現(xiàn)在再創(chuàng)建新項(xiàng)目時(shí)Maven下載依賴失敗,且maven依賴刷新按鍵一直沒反應(yīng),所以本文給大家介紹了Springboot程序在使用Maven下載依賴時(shí)失效的解決方法,需要的朋友可以參考下
    2024-05-05
  • SpringBoot 單元測(cè)試JUnit的使用詳解

    SpringBoot 單元測(cè)試JUnit的使用詳解

    這篇文章主要介紹了SpringBoot 單元測(cè)試JUnit的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • WIN7系統(tǒng)JavaEE(java)環(huán)境配置教程(一)

    WIN7系統(tǒng)JavaEE(java)環(huán)境配置教程(一)

    這篇文章主要介紹了WIN7系統(tǒng)JavaEE(java+tomcat7+Eclipse)環(huán)境配置教程,本文重點(diǎn)在于java配置,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 淺談Java finally語句到底是在return之前還是之后執(zhí)行(必看篇)

    淺談Java finally語句到底是在return之前還是之后執(zhí)行(必看篇)

    下面小編就為大家?guī)硪黄獪\談Java finally語句到底是在return之前還是之后執(zhí)行(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java代碼中如何去掉煩人的“!=null”

    Java代碼中如何去掉煩人的“!=null”

    這篇文章主要介紹了Java代碼中去掉煩人的“!=null”,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論