最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

其實(shí) springboot 使用了 CatchManager 來(lái)管理緩存,有了它, 我們就可以緩一的使用各種各樣的緩存, 比如 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)上也有很多的使用方法, 這里就不多說(shuō)了, 這里說(shuō)一下,手動(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 來(lái)讀取緩存, 及緩存中的數(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);
    }
}

說(shuō)一個(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 緩存來(lái)存入數(shù)據(jù)

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

上面的緩存沒(méi)有過(guò)期時(shí)間的方法, 所以 我們要想給緩存加一個(gè)過(guò)期時(shí)間, 就需要我們自已來(lái)定義一個(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 的子類來(lái)創(chuàng)建
        SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
       	//simpleCacheManager 需要指定它所管理的 緩存類 列表,  所以我們這里新建一個(gè) set 且來(lái)存放 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;
    }
}

如果我們要自定義 緩存類, 比如給緩存加上過(guò)期時(shí)間, 就可以自己寫一個(gè)類去繼承 Cache 接口,并添加一些方法, 來(lái)做緩存過(guò)期時(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數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的實(shí)現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)之雙向鏈表的實(shí)現(xiàn)

    相較單鏈表,雙向鏈表除了data與next域,還多了一個(gè)pre域用于表示每個(gè)節(jié)點(diǎn)的前一個(gè)元素。這樣做給雙向鏈表帶來(lái)了很多優(yōu)勢(shì)。本文主要介紹了雙向鏈表的實(shí)現(xiàn),需要的可以參考一下
    2022-10-10
  • Java如何使用interrupt()終止線程

    Java如何使用interrupt()終止線程

    這篇文章主要介紹了Java如何使用interrupt()終止線程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • J2EE Servlet基礎(chǔ)在瀏覽器上運(yùn)行HelloServlet的方法

    J2EE Servlet基礎(chǔ)在瀏覽器上運(yùn)行HelloServlet的方法

    這篇文章主要介紹了J2EE Servlet基礎(chǔ)在瀏覽器上運(yùn)行HelloServlet的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Spring JPA 錯(cuò)題集解決案例

    Spring JPA 錯(cuò)題集解決案例

    這篇文章主要為大家介紹了Spring JPA 錯(cuò)題集解決案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Flowable?ReceiveTask使用場(chǎng)景分析

    Flowable?ReceiveTask使用場(chǎng)景分析

    這篇文章主要為大家介紹了Flowable?ReceiveTask使用場(chǎng)景分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • JFormDesigner(IDEA)下載方法

    JFormDesigner(IDEA)下載方法

    JFormDesigner是一種Java Swing GUI設(shè)計(jì)工具,可快速創(chuàng)建用戶界面,支持多種布局管理器,如GridBagLayout、SpringLayout等,本文給大家介紹JFormDesigner(IDEA)下載方法,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • SpringBoot參數(shù)校驗(yàn)及原理全面解析

    SpringBoot參數(shù)校驗(yàn)及原理全面解析

    文章介紹了SpringBoot中使用@Validated和@Valid注解進(jìn)行參數(shù)校驗(yàn)的方法,包括基本用法和進(jìn)階用法,如自定義驗(yàn)證注解、多屬性聯(lián)合校驗(yàn)和嵌套校驗(yàn),并簡(jiǎn)要介紹了實(shí)現(xiàn)原理
    2024-11-11
  • Java亂碼問(wèn)題解決方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java亂碼問(wèn)題解決方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    開發(fā)java應(yīng)用出現(xiàn)亂碼是很常見的,畢竟現(xiàn)在unicode的使用還不是很廣泛,下面給大家分享Java亂碼問(wèn)題解決方法,感興趣的朋友一起看看吧
    2017-07-07
  • SpringBoot如何監(jiān)控Redis中某個(gè)Key的變化(自定義監(jiān)聽器)

    SpringBoot如何監(jiān)控Redis中某個(gè)Key的變化(自定義監(jiān)聽器)

    這篇文章主要介紹了SpringBoot如何監(jiān)控Redis中某個(gè)Key的變化(自定義監(jiān)聽器),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Spring @Transactional注解的聲明式事務(wù)簡(jiǎn)化業(yè)務(wù)邏輯中的事務(wù)管理

    Spring @Transactional注解的聲明式事務(wù)簡(jiǎn)化業(yè)務(wù)邏輯中的事務(wù)管理

    這篇文章主要為大家介紹了Spring @Transactional注解的聲明式事務(wù)簡(jiǎn)化業(yè)務(wù)邏輯中的事務(wù)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10

最新評(píng)論

博爱县| 如皋市| 玛曲县| 沛县| 阜阳市| 高淳县| 山东| 襄汾县| 罗甸县| 政和县| 山西省| 新源县| 咸丰县| 哈密市| 利川市| 岚皋县| 托克托县| 新郑市| 乐亭县| 钦州市| 黑山县| 神木县| 襄汾县| 枣阳市| 益阳市| 江安县| 曲麻莱县| 通州市| 东台市| 临沧市| 太白县| 睢宁县| 双辽市| 遂平县| 东兰县| 恭城| 佛学| 固阳县| 阜宁县| 北京市| 特克斯县|