国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Spring Security】分布式鑒權(quán)的使用

這篇具有很好參考價(jià)值的文章主要介紹了【Spring Security】分布式鑒權(quán)的使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

????歡迎來(lái)到我的CSDN主頁(yè)!????

??我是Java方文山,一個(gè)在CSDN分享筆記的博主。????

??推薦給大家我的專欄《Spring Security》。????

??點(diǎn)擊這里,就可以查看我的主頁(yè)啦!????

Java方文山的個(gè)人主頁(yè)

??如果感覺(jué)還不錯(cuò)的話請(qǐng)給我點(diǎn)贊吧!????

??期待你的加入,一起學(xué)習(xí),一起進(jìn)步!????

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

前言

我們都知道Spring Security是做認(rèn)證鑒權(quán)的框架,為了一些不必要的麻煩,登錄功能都是他們自己做的,那我們就需要將登錄的功能交給Spring Security管理,但是他們做的東西肯定也是不滿足于我們的需求,所以我們要在根據(jù)他們提供的代碼上自定義,可以將自定義的用戶信息獲取邏輯集成到Spring Security中,從而實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)的用戶身份認(rèn)證。

再上一篇中我是通過(guò)實(shí)現(xiàn)UserDetailsService接口并重寫(xiě)loadUserByUsername方法完成的,但是后面我想了想不應(yīng)該把代碼放在UserServiceImpl層,所以我們需要?jiǎng)?chuàng)建一個(gè)類來(lái)繼承UserServiceImpl將自定義用戶身份認(rèn)證的代碼寫(xiě)入。

MyUserDetailsService?

package com.csdn.security.config;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.csdn.security.pojo.User;
import com.csdn.security.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;

import java.util.Objects;

/**
 * @author Java方文山
 * @compay csdn_Java方文山
 * @create 2023-12-22-12:10
 */
@Component
public class MyUserDetailsService implements UserDetailsService {
    
    @Autowired
    private UserServiceImpl userService;

    /**
     * 實(shí)現(xiàn)Spring Security內(nèi)置的UserDetailService接口,重寫(xiě)loadUserByUsername方法實(shí)現(xiàn)數(shù)據(jù)庫(kù)的身份校驗(yàn)
     * @param username
     * @return
     * @throws UsernameNotFoundException
     */
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //根據(jù)用戶名查詢數(shù)據(jù)庫(kù)中用戶信息
        User user = userService.getOne(new QueryWrapper<User>().eq("username", username));
        //判斷用戶是否存在
        if(Objects.isNull(user))
            throw new UsernameNotFoundException("用戶不存在");
        //權(quán)限校驗(yàn)TODO,后續(xù)講解
        return user;
    }
}

記得我們也要把我們做身份驗(yàn)證這里也改掉,替換成MyUserDetailsService?

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

?一、前期準(zhǔn)備

我們將數(shù)據(jù)相應(yīng)到前端,肯定需要特定的格式,方便我們前端做數(shù)據(jù)顯示,這里會(huì)用到兩個(gè)類

JsonResponseStatus?

package com.csdn.security.resp;

import lombok.Getter;

@Getter
public enum JsonResponseStatus {

    OK(200, "OK"),
    UN_KNOWN(500, "未知錯(cuò)誤"),
    RESULT_EMPTY(1000, "查詢結(jié)果為空!"),
    ;

    private final Integer code;
    private final String msg;

    JsonResponseStatus(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

}

這個(gè)類是一個(gè)枚舉類,用于定義接口返回的 JSON 響應(yīng)狀態(tài)。它包含了一些常見(jiàn)的響應(yīng)狀態(tài),如 OK(200, "OK") 表示請(qǐng)求成功,UN_KNOWN(500, "未知錯(cuò)誤") 表示未知錯(cuò)誤,RESULT_EMPTY(1000, "查詢結(jié)果為空!") 表示查詢結(jié)果為空。每個(gè)響應(yīng)狀態(tài)都有一個(gè)對(duì)應(yīng)的狀態(tài)碼和消息。在接口的返回值中,可以使用這個(gè)枚舉類來(lái)表示具體的響應(yīng)狀態(tài)。?

JsonResponseBody

package com.csdn.security.resp;

import lombok.Data;

@Data
public class JsonResponseBody<T> {

    private Integer code;
    private String msg;
    private T data;
    private Long total;

    private JsonResponseBody(JsonResponseStatus jsonResponseStatus, T data) {
        this.code = jsonResponseStatus.getCode();
        this.msg = jsonResponseStatus.getMsg();
        this.data = data;
    }

    private JsonResponseBody(JsonResponseStatus jsonResponseStatus, T data, Long total) {
        this.code = jsonResponseStatus.getCode();
        this.msg = jsonResponseStatus.getMsg();
        this.data = data;
        this.total = total;
    }

    public static <T> JsonResponseBody<T> success() {
        return new JsonResponseBody<T>(JsonResponseStatus.OK, null);
    }

    public static <T> JsonResponseBody<T> success(T data) {
        return new JsonResponseBody<T>(JsonResponseStatus.OK, data);
    }

    public static <T> JsonResponseBody<T> success(T data, Long total) {
        return new JsonResponseBody<T>(JsonResponseStatus.OK, data, total);
    }

    public static <T> JsonResponseBody<T> unknown() {
        return new JsonResponseBody<T>(JsonResponseStatus.UN_KNOWN, null);
    }

    public static <T> JsonResponseBody<T> other(JsonResponseStatus jsonResponseStatus) {
        return new JsonResponseBody<T>(jsonResponseStatus, null);
    }

}

?這個(gè)類是一個(gè)通用的 JSON 響應(yīng)體類

  • code:表示響應(yīng)狀態(tài)碼。
  • msg:表示響應(yīng)消息。
  • data:表示響應(yīng)數(shù)據(jù)的泛型對(duì)象。
  • total:表示響應(yīng)數(shù)據(jù)的總數(shù)。

修改我們登陸成功后的操作,加入一個(gè)JSON字符串轉(zhuǎn)換類并將獲取到的對(duì)象輸出到前端。

    //JSON格式轉(zhuǎn)換
    @Autowired
    private ObjectMapper objectMapper;
 //設(shè)置登錄成功后重定向到那個(gè)頁(yè)面
  .successHandler((req, resp, auth) -> {
    objectMapper.writeValue(resp.getOutputStream(),auth.getPrincipal());
 })

?重啟服務(wù)器登錄進(jìn)行測(cè)試

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

?可以看到我們的數(shù)據(jù)都響應(yīng)到前端了,前端人員就可以拿著數(shù)據(jù)進(jìn)行操作了

二、分布式鑒權(quán)

1.授權(quán)介紹

Spring Security 中的授權(quán)分為兩種類型:

  • 基于角色的授權(quán):以用戶所屬角色為基礎(chǔ)進(jìn)行授權(quán),如管理員、普通用戶等,通過(guò)為用戶分配角色來(lái)控制其對(duì)資源的訪問(wèn)權(quán)限。

  • 基于資源的授權(quán):以資源為基礎(chǔ)進(jìn)行授權(quán),如 URL、方法等,通過(guò)定義資源所需的權(quán)限,來(lái)控制對(duì)該資源的訪問(wèn)權(quán)限。

Spring Security 提供了多種實(shí)現(xiàn)授權(quán)的機(jī)制,最常用的是使用基于注解的方式,建立起訪問(wèn)資源和權(quán)限之間的映射關(guān)系。

其中最常用的兩個(gè)注解是 @Secured@PreAuthorize。@Secured 注解是更早的注解,基于角色的授權(quán)比較適用,@PreAuthorize 基于 SpEL 表達(dá)式的方式,可靈活定義所需的權(quán)限,通常用于基于資源的授權(quán)。

2.表設(shè)計(jì)

我們會(huì)用到以下五張表sys_user、sys_user_role、sys_role、sys_role_module、sys_module

sys_user(用戶表)

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

sys_user_role(用戶角色表)

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

sys_role(角色表)

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java?sys_role_module(角色權(quán)限表)

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

?sys_module(模塊表)

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

3.獲取用戶權(quán)限

我們?cè)跀?shù)據(jù)表都在一個(gè)服務(wù)器的情況下,可以直接進(jìn)行聯(lián)表查詢

select * from sys_user a,
              sys_user_role b,
              sys_role_module c,
              sys_module d
where a.id=b.user_id and
      b.role_id=c.role_id and
      c.module_id=d.id

如果我們不是源于一個(gè)數(shù)據(jù)庫(kù)或者一個(gè)服務(wù)器,那么就要將數(shù)據(jù)在后端做處理,先在我們自定義身份驗(yàn)證類也就是MyUserDetailsService類,隨后將五個(gè)表的service實(shí)現(xiàn)類引入

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

?認(rèn)證身份的同時(shí)把權(quán)限查詢出來(lái)。

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //根據(jù)用戶名查詢數(shù)據(jù)庫(kù)中用戶信息
        User user = userService.getOne(new QueryWrapper<User>().eq("username", username));
        //判斷用戶是否存在
        if(Objects.isNull(user))
            throw new UsernameNotFoundException("用戶不存在");
        //權(quán)限校驗(yàn)TODO
        //.stream().map()遍歷所有對(duì)象將新的數(shù)據(jù)放入流中
        // .collect將流中的數(shù)據(jù)變成一個(gè)集合

        //1.先查詢出用戶擁有的角色
        List<Integer> userId = userRoleService.
                list(new QueryWrapper<UserRole>()
                        .eq("user_id", user.getId()))
                .stream().map(UserRole::getRoleId)
                .collect(Collectors.toList());
        //2.根據(jù)角色查詢角色名稱
        List<String> roleId = roleService
                .list(new QueryWrapper<Role>().in("role_id", userId))
                .stream().map(Role::getRoleName)
                .collect(Collectors.toList());
        //3.根據(jù)角色查詢角色所擁有模塊ID
        List<Integer> ModuleId = roleModuleService
                .list(new QueryWrapper<RoleModule>().in("role_id", userId))
                .stream().map(RoleModule::getModuleId)
                .collect(Collectors.toList());
        //4.根據(jù)模塊ID查詢模塊URL
        List<String> urls = moduleService
                .list(new QueryWrapper<Module>().in("id", ModuleId))
                .stream().map(Module::getUrl)
                .collect(Collectors.toList());
        //將用戶角色名稱與模塊url放入一個(gè)集合
        roleId.addAll(urls);
        //認(rèn)證集合對(duì)象
        List<SimpleGrantedAuthority> collect = roleId.stream().map(e -> {
            return new SimpleGrantedAuthority(e);
        }).collect(Collectors.toList());
        //將認(rèn)證集合對(duì)象賦值給用戶實(shí)體
        user.setAuthorities(collect);

        return user;
    }

?這里還有一個(gè)問(wèn)題需要我們解決,我們寫(xiě)完以上代碼進(jìn)行測(cè)試后發(fā)現(xiàn)有錯(cuò)誤

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

該錯(cuò)誤很簡(jiǎn)單出現(xiàn)在對(duì)模塊URL遍歷這里,因?yàn)槲覀兊臄?shù)據(jù)庫(kù)表中有兩個(gè)值是空的

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

第一個(gè)方法是加上url的值

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

第二個(gè)方法就是過(guò)濾

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java

4.修改SpringSecurity配置類

當(dāng)我們想要開(kāi)啟spring方法級(jí)安全時(shí),只需要在任何 @Configuration實(shí)例上使用@EnableGlobalMethodSecurity 注解就能達(dá)到此目的。同時(shí)這個(gè)注解為我們提供了prePostEnabled securedEnabled jsr250Enabled 三種不同的機(jī)制來(lái)實(shí)現(xiàn)同一種功能。

修改WebSecurityConfig配置類,開(kāi)啟基于方法的安全認(rèn)證機(jī)制,也就是說(shuō)在web層的controller啟用注解機(jī)制的安全確認(rèn)。

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig {
    ...
}

@EnableGlobalMethodSecurity是Spring Security提供的一個(gè)注解,用于啟用方法級(jí)別的安全性。它可以在任何@Configuration類上使用,以啟用Spring Security的方法級(jí)別的安全性功能。它接受一個(gè)或多個(gè)參數(shù),用于指定要使用的安全注解類型和其他選項(xiàng)。以下是一些常用的參數(shù):

  • prePostEnabled:如果設(shè)置為true,則啟用@PreAuthorize@PostAuthorize注解。默認(rèn)值為false。

  • securedEnabled:如果設(shè)置為true,則啟用@Secured注解。默認(rèn)值為false。

  • jsr250Enabled:如果設(shè)置為true,則啟用@RolesAllowed注解。默認(rèn)值為false

  • proxyTargetClass:如果設(shè)置為true,則使用CGLIB代理而不是標(biāo)準(zhǔn)的JDK動(dòng)態(tài)代理。默認(rèn)值為false。

使用@EnableGlobalMethodSecurity注解后,可以在應(yīng)用程序中使用Spring Security提供的各種注解來(lái)保護(hù)方法,例如@Secured@PreAuthorize、@PostAuthorize@RolesAllowed。這些注解允許您在方法級(jí)別上定義安全規(guī)則,以控制哪些用戶可以訪問(wèn)哪些方法。

注解介紹:

注解 說(shuō)明
@PreAuthorize 用于在方法執(zhí)行之前對(duì)訪問(wèn)進(jìn)行權(quán)限驗(yàn)證
@PostAuthorize 用于在方法執(zhí)行之后對(duì)返回結(jié)果進(jìn)行權(quán)限驗(yàn)證
@Secured 用于在方法執(zhí)行之前對(duì)訪問(wèn)進(jìn)行權(quán)限驗(yàn)證
@RolesAllowed 是Java標(biāo)準(zhǔn)的注解之一,用于在方法執(zhí)行之前對(duì)訪問(wèn)進(jìn)行權(quán)限驗(yàn)證

5.控制Controller層接口權(quán)限


    @PreAuthorize("hasAuthority('order:manager:list')")
    @RequestMapping("/queryRoles")
    public String  queryRoles(){
        return "管理員權(quán)限";
    }

    @PreAuthorize("hasAnyAuthority('book:manager:list','order:manager:list')")
    @RequestMapping("/queryModules")
    public String queryModules(){
        return "管理員權(quán)限/用戶權(quán)限";
    }

至此我們的鑒權(quán)就全部完成了

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java?

到這里我的分享就結(jié)束了,歡迎到評(píng)論區(qū)探討交流!!

??如果覺(jué)得有用的話還請(qǐng)點(diǎn)個(gè)贊吧 ??

【Spring Security】分布式鑒權(quán)的使用,# Spring Security,spring,分布式,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-786803.html

到了這里,關(guān)于【Spring Security】分布式鑒權(quán)的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Cloud實(shí)戰(zhàn) |分布式系統(tǒng)的流量控制、熔斷降級(jí)組件Sentinel如何使用

    Spring Cloud實(shí)戰(zhàn) |分布式系統(tǒng)的流量控制、熔斷降級(jí)組件Sentinel如何使用

    專欄集錦,大佬們可以收藏以備不時(shí)之需 Spring Cloud實(shí)戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9270827.html Python 實(shí)戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9271194.html Logback 詳解專欄:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow專欄:https://blog.csdn.net/superdangbo/category_869

    2024年02月04日
    瀏覽(34)
  • 新版onenet平臺(tái)安全鑒權(quán)的確定與使用

    新版onenet平臺(tái)安全鑒權(quán)的確定與使用

    ? 根據(jù)onenet官方更新的文檔:平臺(tái)提供開(kāi)放的API接口,用戶可以通過(guò)HTTP/HTTPS調(diào)用,進(jìn)行設(shè)備管理,數(shù)據(jù)查詢,設(shè)備命令交互等操作,在API的基礎(chǔ)上,根據(jù)自己的個(gè)性化需求搭建上層應(yīng)用。 ? ?為提高API訪問(wèn)安全性,OneNET API的鑒權(quán)參數(shù)作為header的authorization參數(shù)存在。 安全鑒權(quán)

    2024年02月04日
    瀏覽(13)
  • 【Spring Boot Admin】使用(整合Spring Security服務(wù),添加鑒權(quán))

    【Spring Boot Admin】使用(整合Spring Security服務(wù),添加鑒權(quán))

    Spring Boot Admin 監(jiān)控平臺(tái) 背景:Spring Boot Admin 監(jiān)控平臺(tái)不添加鑒權(quán)就直接訪問(wèn)的話,是非常不安全的。所以在生產(chǎn)環(huán)境中使用時(shí),需要添加鑒權(quán),只有通過(guò)鑒權(quán)后才能監(jiān)控客戶端服務(wù)。本文整合Spring Security進(jìn)行實(shí)現(xiàn)。 pom依賴 yml配置 啟動(dòng)類@EnableAdminServer 安全配置類:SecuritySe

    2024年02月16日
    瀏覽(46)
  • 在Spring中,可以使用不同的方式來(lái)實(shí)現(xiàn)分布式鎖,例如基于數(shù)據(jù)庫(kù)、Redis、ZooKeeper等

    在Spring中,可以使用不同的方式來(lái)實(shí)現(xiàn)分布式鎖,例如基于數(shù)據(jù)庫(kù)、Redis、ZooKeeper等

    在Spring中,可以使用不同的方式來(lái)實(shí)現(xiàn)分布式鎖,例如基于數(shù)據(jù)庫(kù)、Redis、ZooKeeper等。下面是兩種常見(jiàn)的實(shí)現(xiàn)方式: 使用Redis實(shí)現(xiàn)分布式鎖: 使用自定義注解實(shí)現(xiàn)本地鎖: 以上是兩種常見(jiàn)的在Spring中實(shí)現(xiàn)分布式鎖的方式。第一種方式使用Redis作為分布式鎖的存儲(chǔ)介質(zhì),通過(guò)

    2024年03月17日
    瀏覽(24)
  • .NET CORE開(kāi)源 DDD微服務(wù) 支持 多租戶 單點(diǎn)登錄 多級(jí)緩存、自動(dòng)任務(wù)、分布式、日志、授權(quán)和鑒權(quán) 、網(wǎng)關(guān) 、注冊(cè)與發(fā)現(xiàn) 系統(tǒng)架構(gòu) docker部署

    .NET CORE開(kāi)源 DDD微服務(wù) 支持 多租戶 單點(diǎn)登錄 多級(jí)緩存、自動(dòng)任務(wù)、分布式、日志、授權(quán)和鑒權(quán) 、網(wǎng)關(guān) 、注冊(cè)與發(fā)現(xiàn) 系統(tǒng)架構(gòu) docker部署

    源代碼地址https://github.com/junkai-li/NetCoreKevin 基于NET6搭建跨平臺(tái)DDD思想WebApi架構(gòu)、IDS4單點(diǎn)登錄、多緩存、自動(dòng)任務(wù)、分布式、多租戶、日志、授權(quán)和鑒權(quán)、CAP、SignalR、 docker部署? 如需簡(jiǎn)約項(xiàng)目可直接去除項(xiàng)目引用 解耦設(shè)計(jì)都可以單獨(dú)引用 架構(gòu)默認(rèn)全部引用并啟動(dòng) 項(xiàng)目啟動(dòng)時(shí)

    2023年04月24日
    瀏覽(20)
  • 分布式鏈路追蹤專欄,Spring Cloud Sleuth:分布式鏈路追蹤之通信模型設(shè)計(jì)

    分布式鏈路追蹤專欄,Spring Cloud Sleuth:分布式鏈路追蹤之通信模型設(shè)計(jì)

    Spring Cloud Sleuth ?賦予分布式跟蹤的 ?Spring Boot? 自動(dòng)配置的一鍵解決方案。 Spring Cloud Sleuth? 是基于 ?Brave? 的封裝,也是很多公司采用開(kāi)源加自研的最佳解決方案。 那么從作為架構(gòu)師或者技術(shù)專家如何去借鑒優(yōu)秀框架的設(shè)計(jì)理念和思想,本次? Chat? 將開(kāi)啟作者既分布式鏈路

    2024年01月19日
    瀏覽(27)
  • Spring Cloud Alibaba 最新版本(基于Spring Boot 3.1.0)整合完整使用及與各中間件集成
Sleuth+Zipkin集成分布式鏈路追蹤

    Spring Cloud Alibaba 最新版本(基于Spring Boot 3.1.0)整合完整使用及與各中間件集成 Sleuth+Zipkin集成分布式鏈路追蹤

    目錄 前言 源碼地址 官方中文文檔 使用版本 spring Spring Boot 3.1.0 中間件 使用到的組件與功能 環(huán)境安裝 虛擬機(jī) nexus nacos 集成過(guò)程 工程搭建 父工程搭建 子工程 服務(wù)集成 nacos集成 配置文件 服務(wù)注冊(cè)與發(fā)現(xiàn)-discovery 服務(wù)注冊(cè) 啟動(dòng) 服務(wù)發(fā)現(xiàn) 測(cè)試 配置管理-config 新增配置 ?測(cè)試

    2024年02月12日
    瀏覽(59)
  • Spring Boot如何實(shí)現(xiàn)分布式消息隊(duì)列

    Spring Boot如何實(shí)現(xiàn)分布式消息隊(duì)列

    在分布式系統(tǒng)中,消息隊(duì)列是非常重要的一部分,可以幫助開(kāi)發(fā)人員實(shí)現(xiàn)異步處理、解耦系統(tǒng)、提高系統(tǒng)可靠性等。本文將介紹如何使用 Spring Boot 實(shí)現(xiàn)分布式消息隊(duì)列。 消息隊(duì)列是一種存儲(chǔ)消息的容器,可以緩存消息并在需要的時(shí)候按照一定的規(guī)則將消息發(fā)送給消費(fèi)者。常

    2024年02月14日
    瀏覽(22)
  • Spring Boot 中的 Redis 分布式鎖

    Spring Boot 中的 Redis 分布式鎖

    在分布式系統(tǒng)中,多個(gè)進(jìn)程同時(shí)訪問(wèn)共享資源時(shí),很容易出現(xiàn)并發(fā)問(wèn)題。為了避免這些問(wèn)題,我們可以使用分布式鎖來(lái)保證共享資源的獨(dú)占性。Redis 是一款非常流行的分布式緩存,它也提供了分布式鎖的功能。在 Spring Boot 中,我們可以很容易地使用 Redis 分布式鎖來(lái)管理并發(fā)

    2024年02月11日
    瀏覽(24)
  • Spring Boot 集成 Redisson分布式鎖

    Spring Boot 集成 Redisson分布式鎖

    ????????Redisson 是一種基于 Redis 的 Java 駐留集群的分布式對(duì)象和服務(wù)庫(kù),可以為我們提供豐富的分布式鎖和線程安全集合的實(shí)現(xiàn)。在 Spring Boot 應(yīng)用程序中使用 Redisson 可以方便地實(shí)現(xiàn)分布式應(yīng)用程序的某些方面,例如分布式鎖、分布式集合、分布式事件發(fā)布和訂閱等。本篇

    2024年02月10日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包