激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: h视频在线免费看 | 成人黄视频在线观看 | 青草久久久久 | 国产精品久久99精品毛片三a | 国产69精品久久久久久久久久 | 亚洲一区二区三区视频免费 | 久久久一区二区精品 | 亚洲精品v天堂中文字幕 | 黄色的视频免费观看 | va免费视频 | 精品久久一区二区 | 亚洲国产成人久久一区www妖精 | 久久精品一区视频 | 爱操影视 | 久久久久电影网站 | 免费a级片在线观看 | 精品国产一区二区三区成人影院 | 久久精精品 | 国产在线观看91一区二区三区 | 成人三级电影网站 | 美女在线观看视频一区二区 | 成人免费毛片在线观看 | 日本特级a一片免费观看 | 日韩黄色av网站 | 欧美韩国一区 | 欧美男女爱爱视频 | 国产精品午夜性视频 | 国产草草视频 | 国产91av视频 | 奇米影视8888狠狠狠狠 | 午夜精品毛片 | 色678黄网站全部免费 | 亚洲日本高清 | 国产成人77亚洲精品www | 美国黄色小视频 | 国产精品久久久久久模特 | 在线亚洲综合 | 成年毛片 | 91女上位 在线播放 bt 自拍 另类 综合 欧美 | 91精品国产91久久久 | 成人三区四区 |