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

SpringBoot中封裝Cors自動(dòng)配置方式

 更新時(shí)間:2025年03月31日 08:52:51   作者:catoop  
這篇文章主要介紹了SpringBoot中封裝Cors自動(dòng)配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot封裝Cors自動(dòng)配置

在現(xiàn)代 Web 開發(fā)中,跨域資源共享(CORS)是一個(gè)常見的問題。Spring Boot 提供了靈活的方式來處理 CORS 配置。

本文將介紹如何通過自動(dòng)配置的方式,在 Spring Boot 應(yīng)用程序中全局配置 CORS。

背景

當(dāng)瀏覽器從一個(gè)域名的網(wǎng)頁去請(qǐng)求另一個(gè)域名的資源時(shí),會(huì)發(fā)生跨域請(qǐng)求。為了安全起見,默認(rèn)情況下瀏覽器會(huì)阻止這種請(qǐng)求。因此,我們需要在服務(wù)器端進(jìn)行適當(dāng)?shù)呐渲脕碓试S這些跨域請(qǐng)求。

Spring Boot 提供了 CorsRegistryWebMvcConfigurer 接口來進(jìn)行 CORS 配置。然而,如果我們希望在整個(gè)應(yīng)用程序中統(tǒng)一管理 CORS 設(shè)置,可以考慮使用自動(dòng)配置的方式。

實(shí)現(xiàn)步驟

我們將創(chuàng)建兩個(gè)主要類:

  1. GlobalCorsProperties: 用于存儲(chǔ) CORS 的配置屬性。
  2. GlobalCorsAutoConfiguration: 用于根據(jù)配置屬性自動(dòng)配置 CORS。

1. 創(chuàng)建 GlobalCorsProperties 類

這個(gè)類將負(fù)責(zé)讀取配置文件中的 CORS 屬性,并將其暴露給其他組件使用。

/**
 * Cors全局配置
 *
 * @author 單紅宇
 * @since 2025/2/18 17:18
 */
@Data
@ConfigurationProperties("spring.web.globalcors")
public class GlobalCorsProperties {

    /**
     * 是否啟用 CORS 全局配置
     */
    private boolean enabled = false;

    /**
     * CORS 配置映射
     */
    private final Map<String, CorsConfiguration> corsConfigurations = new LinkedHashMap<>();
}

2. 創(chuàng)建 GlobalCorsAutoConfiguration 類

這個(gè)類將在 Spring Boot 啟動(dòng)時(shí)根據(jù) GlobalCorsProperties 中的配置來設(shè)置 CORS。

/**
 * 全局Cors配置
 *
 * @author 單紅宇
 * @since 2025/2/18 17:33
 */
@AutoConfiguration
@Import(GlobalCorsProperties.class)
@ConditionalOnClass(SimpleUrlHandlerMapping.class)
@ConditionalOnProperty(name = "spring.web.globalcors.enabled", havingValue = "true")
public class GlobalCorsAutoConfiguration implements InitializingBean {

    /**
     * RequestMappingHandlerMapping 實(shí)例
     */
    @Autowired
    private RequestMappingHandlerMapping requestMappingHandlerMapping;

    @Override
    public void afterPropertiesSet() throws Exception {
        // 獲取 GlobalCorsProperties 并設(shè)置 CORS 配置
        requestMappingHandlerMapping.setCorsConfigurations(SpringContextHolder.getApplicationContext()
                .getBean(GlobalCorsProperties.class).getCorsConfigurations());
    }
}

3. 配置 application.properties 文件

最后,我們?cè)?application.properties 文件中添加相應(yīng)的配置項(xiàng)。

spring.web.globalcors.enabled=true
spring.web.globalcors.cors-configurations.[/**].allow-credentials=true
spring.web.globalcors.cors-configurations.[/**].allowed-headers=*
spring.web.globalcors.cors-configurations.[/**].allowed-methods=GET,POST,PUT,DELETE,OPTIONS
spring.web.globalcors.cors-configurations.[/**].allowed-origin-patterns=http://localhost:3000
spring.web.globalcors.cors-configurations.[/**].max-age=1800

如果你把這個(gè)自動(dòng)配置封裝到自己的 starter 中,還需要將 GlobalCorsAutoConfiguration 類添加到

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 

文件中。

總結(jié)

通過以上步驟,我們成功地在 Spring Boot 應(yīng)用程序中實(shí)現(xiàn)了 CORS 的自動(dòng)配置。

這種方式不僅簡(jiǎn)化了 CORS 的配置過程,還使得我們的代碼更加模塊化和易于維護(hù)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot ApplicationListener事件監(jiān)聽接口使用問題探究

    SpringBoot ApplicationListener事件監(jiān)聽接口使用問題探究

    這篇文章主要介紹了SpringBoot ApplicationListener事件監(jiān)聽接口使用問題,自定義監(jiān)聽器需要實(shí)現(xiàn)ApplicationListener接口,實(shí)現(xiàn)對(duì)應(yīng)的方法來完成自己的業(yè)務(wù)邏輯。SpringBoot Application共支持6種事件監(jiān)聽
    2023-04-04
  • JVM性能調(diào)優(yōu)之運(yùn)行時(shí)參數(shù)小結(jié)

    JVM性能調(diào)優(yōu)之運(yùn)行時(shí)參數(shù)小結(jié)

    jvm是java的運(yùn)行環(huán)境,在jvm中有很多的參數(shù)可以進(jìn)行設(shè)置,本文主要介紹了JVM性能調(diào)優(yōu)之運(yùn)行時(shí)參數(shù)小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • SpringBoot@Profile注解和Spring?EL(多環(huán)境注入)

    SpringBoot@Profile注解和Spring?EL(多環(huán)境注入)

    為了方便, Spring還提供了 Profile機(jī)制, 使我們可以很方便地實(shí)現(xiàn)各個(gè)環(huán)境之間的切換,在使用DI來依賴注入的時(shí)候,能夠根據(jù)@profile標(biāo)明的環(huán)境,將注入符合當(dāng)前運(yùn)行環(huán)境的相應(yīng)的bean,本文通過示例代碼介紹SpringBoot@Profile注解和Spring?EL,需要的朋友可以參考下
    2024-02-02
  • Java GUI進(jìn)階之流式布局管理器FlowLayout專項(xiàng)精講

    Java GUI進(jìn)階之流式布局管理器FlowLayout專項(xiàng)精講

    FlowLayout-流式布局管理器,按水平方向依次排列放置組件,排滿一行,換下一行繼續(xù)排列。排列方向(左到右 或 右到左)取決于容器的componentOrientation屬性
    2022-04-04
  • Spring核心之IOC與bean超詳細(xì)講解

    Spring核心之IOC與bean超詳細(xì)講解

    IOC-Inversion of Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-10-10
  • SpringBoot項(xiàng)目運(yùn)行jar包啟動(dòng)的步驟流程解析

    SpringBoot項(xiàng)目運(yùn)行jar包啟動(dòng)的步驟流程解析

    這篇文章主要介紹了SpringBoot項(xiàng)目運(yùn)行jar包啟動(dòng)的步驟流程,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-07-07
  • springboot整合dubbo設(shè)置全局唯一ID進(jìn)行日志追蹤的示例代碼

    springboot整合dubbo設(shè)置全局唯一ID進(jìn)行日志追蹤的示例代碼

    這篇文章主要介紹了springboot整合dubbo設(shè)置全局唯一ID進(jìn)行日志追蹤,本文通過圖文示例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java compareTo用法詳解

    Java compareTo用法詳解

    在Java編程中,有時(shí)候我們需要對(duì)對(duì)象進(jìn)行比較和排序,為了實(shí)現(xiàn)這一目標(biāo),Java提供了一個(gè)非常有用的接口叫做Comparable,以及一個(gè)重要的方法compareTo,下面我們就來看看compareTo的具體用法吧
    2023-09-09
  • java兩個(gè)線程同時(shí)寫一個(gè)文件

    java兩個(gè)線程同時(shí)寫一個(gè)文件

    這篇文章主要為大家詳細(xì)介紹了java兩個(gè)線程同時(shí)寫一個(gè)文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Spring Boot和Kotlin的無縫整合與完美交融

    Spring Boot和Kotlin的無縫整合與完美交融

    這篇文章主要給大家介紹了關(guān)于Spring Boot和Kotlin的無縫整合與完美交融的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06

最新評(píng)論