一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Spring Boot Oauth2緩存UserDetails到Ehcache

詳解Spring Boot Oauth2緩存UserDetails到Ehcache

2021-05-24 13:39五毛程序員 Java教程

這篇文章主要介紹了詳解Spring Boot Oauth2緩存UserDetails到Ehcache,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在spring中有一個類cachinguserdetailsservice實現了userdetailsservice接口,該類使用靜態代理模式為userdetailsservice提供緩存功能。該類源碼如下:

cachinguserdetailsservice.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class cachinguserdetailsservice implements userdetailsservice {
  private usercache usercache = new nullusercache();
  private final userdetailsservice delegate;
 
  cachinguserdetailsservice(userdetailsservice delegate) {
    this.delegate = delegate;
  }
 
  public usercache getusercache() {
    return this.usercache;
  }
 
  public void setusercache(usercache usercache) {
    this.usercache = usercache;
  }
 
  public userdetails loaduserbyusername(string username) {
    userdetails user = this.usercache.getuserfromcache(username);
    if (user == null) {
      user = this.delegate.loaduserbyusername(username);
    }
 
    assert.notnull(user, "userdetailsservice " + this.delegate + " returned null for username " + username + ". this is an interface contract violation");
    this.usercache.putuserincache(user);
    return user;
  }
}

cachinguserdetailsservice默認的usercache屬性值為new nullusercache(),該對象并未實現緩存。因為我打算使用ehcache來緩存userdetails,所以需要使用spring的ehcachebasedusercache類,該類是usercache接口的實現類,主要是緩存操作。

緩存userdetails到ehcache的具體實現如下:

ehcache.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
     xsi:nonamespaceschemalocation="http://ehcache.org/ehcache.xsd">
  <!-- 磁盤緩存位置 -->
  <diskstore path="java.io.tmpdir" />
 
  <cache name="usercache"
      maxelementsinmemory="0"
      eternal="true"
      overflowtodisk="true"
      diskpersistent="true"
      memorystoreevictionpolicy="lru">
  </cache>
</ehcache>

userdetailscacheconfig.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@slf4j
@configuration
public class userdetailscacheconfig {
  @autowired
  private customuserdetailsservice customuserdetailsservice;
 
  @bean
  public usercache usercache(){
    try {
      ehcachebasedusercache usercache = new ehcachebasedusercache();
      val cachemanager = cachemanager.getinstance();
      val cache = cachemanager.getcache("usercache");
      usercache.setcache(cache);
      return usercache;
    } catch (exception e) {
      e.printstacktrace();
      log.error(e.getmessage());
    }
    return null;
  }
 
  @bean
  public userdetailsservice userdetailsservice(){
    constructor<cachinguserdetailsservice> ctor = null;
    try {
      ctor = cachinguserdetailsservice.class.getdeclaredconstructor(userdetailsservice.class);
    } catch (nosuchmethodexception e) {
      e.printstacktrace();
    }
    assert.notnull(ctor, "cachinguserdetailsservice constructor is null");
    ctor.setaccessible(true);
 
    cachinguserdetailsservice cachinguserdetailsservice = beanutils.instantiateclass(ctor, customuserdetailsservice);
    cachinguserdetailsservice.setusercache(usercache());
    return cachinguserdetailsservice;
  }
}

使用

?
1
2
@autowired
private userdetailsservice userdetailsservice;

歡迎關注我的oauthserver項目,僅僅需要運行建表sql,修改數據庫的連接配置,即可得到一個spring boot oauth2 server微服務。項目地址 https://github.com/jeesun/oauthserver

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/rainmer/p/9417108.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产剧情麻豆刘玥视频 | 韩国免费特一级毛片 | 亚洲欧美日韩国产精品影院 | 东北老妇露脸xxxxx | 欧美a级在线观看 | 肉性天堂| 三级伦理影院 | 黑人群性xxx | 无人区在线观看免费视频国语 | 91精品手机国产在线观 | 日本一二线不卡在线观看 | 午夜欧美精品久久久久久久久 | 久久午夜一区二区 | 欧美日韩视频在线一区二区 | 天天做日日爱 | 交换余生在线播放免费 | 精品国产日韩一区三区 | 波多野结衣久久国产精品 | 国产90后美女露脸在线观看 | 青草草视频在线观看 | 欧美在线观看一区二区三 | 俄罗斯美女尿尿 | 色涩导航| 91色porny| 毛片亚洲毛片亚洲毛片 | 欧美人与物videos另类3d | 男人插曲女人下面 | 被强迫调教的高辣小说 | 手机在线观看精品国产片 | 91高跟丝袜 | 亚洲第一网色综合久久 | 日韩av线观看 | zoo性欧美| 九九在线精品亚洲国产 | 日本亚洲娇小与黑人tube | 变形金刚第一部 | 性妲己| 91在线一区二区三区 | 大片毛片女女女女女女女 | 色ccc36| 欧美人成绝费网站色www吃脚 |