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

Spring Boot 約定大于配置之如何實現(xiàn)自定義配置

 更新時間:2025年03月15日 15:47:11   作者:和燁  
本文介紹了SpringBoot的“約定大于配置”理念以及如何實現(xiàn)自定義配置,通過實現(xiàn)接口和添加@Configuration注解,開發(fā)者可以靈活地擴展和定制SpringBoot的默認行為,感興趣的朋友一起看看吧

Spring Boot 約定大于配置:實現(xiàn)自定義配置

引言

Spring Boot 是一個基于 Spring 框架的快速開發(fā)框架,它的核心理念之一是 “約定大于配置”。這意味著 Spring Boot 提供了許多默認配置,開發(fā)者只需要關注自己的業(yè)務邏輯,而不需要手動配置大量的細節(jié)。然而,在某些情況下,我們可能需要自定義配置來滿足特定的需求。本文將介紹如何在 Spring Boot 中實現(xiàn)自定義配置,并通過實現(xiàn)接口和添加 @Configuration 注解來完成這一過程。

1. Spring Boot 的約定大于配置

Spring Boot 的“約定大于配置”理念體現(xiàn)在以下幾個方面:

  • 自動配置:Spring Boot 根據(jù)項目的依賴自動配置應用程序。例如,如果項目中引入了 spring-boot-starter-web,Spring Boot 會自動配置 Tomcat 和 Spring MVC。
  • 默認配置:Spring Boot 提供了許多默認配置,例如默認的端口號是 8080,默認的靜態(tài)資源路徑是 classpath:/static 等。
  • 簡化配置:通過 application.propertiesapplication.yml 文件,開發(fā)者可以輕松覆蓋默認配置。

這種設計大大減少了開發(fā)者的配置工作量,使得開發(fā)者可以更專注于業(yè)務邏輯的實現(xiàn)。

2. 自定義配置的需求

盡管 Spring Boot 提供了許多默認配置,但在實際開發(fā)中,我們可能需要自定義一些配置。例如:

  • 自定義 Bean 的加載順序。
  • 自定義某些組件的初始化邏輯。
  • 根據(jù)環(huán)境變量動態(tài)加載配置。

為了實現(xiàn)這些需求,Spring Boot 提供了靈活的擴展機制,允許開發(fā)者通過實現(xiàn)接口和添加注解來自定義配置。

3. 實現(xiàn)自定義配置的步驟

在 Spring Boot 中,實現(xiàn)自定義配置通常需要以下步驟:

  • 實現(xiàn) WebMvcConfigurer 或其他相關接口:根據(jù)需求選擇合適的接口。
  • 添加 @Configuration 注解:將自定義配置類標記為 Spring 的配置類。
  • 重寫接口方法:在配置類中重寫接口的方法,實現(xiàn)自定義邏輯。

下面通過一個具體的示例來演示如何實現(xiàn)自定義配置。

4. 示例:自定義 Spring MVC 配置

假設我們需要自定義 Spring MVC 的配置,例如添加一個攔截器或修改靜態(tài)資源路徑??梢酝ㄟ^以下步驟實現(xiàn):

4.1 創(chuàng)建自定義配置類

首先,創(chuàng)建一個類并實現(xiàn) WebMvcConfigurer 接口。WebMvcConfigurer 是 Spring MVC 提供的接口,用于自定義 MVC 配置。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration // 標記為配置類
public class CustomWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加自定義攔截器
        registry.addInterceptor(new CustomInterceptor())
                .addPathPatterns("/**"); // 攔截所有請求
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 自定義靜態(tài)資源路徑
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/custom-static/");
    }
}

4.2 創(chuàng)建自定義攔截器

在上面的配置類中,我們添加了一個自定義攔截器。攔截器的實現(xiàn)如下:

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class CustomInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("CustomInterceptor: 請求被攔截");
        return true; // 繼續(xù)執(zhí)行后續(xù)邏輯
    }
}

4.3 測試自定義配置

啟動 Spring Boot 應用程序后,訪問任意路徑,控制臺會輸出 CustomInterceptor: 請求被攔截,說明攔截器已生效。同時,靜態(tài)資源路徑也會被映射到 classpath:/custom-static/。

5. 其他自定義配置場景

除了自定義 Spring MVC 配置外,Spring Boot 還支持許多其他自定義配置場景。以下是一些常見的示例:

5.1 自定義數(shù)據(jù)源配置

通過實現(xiàn) DataSourceInitializer 接口,可以自定義數(shù)據(jù)源的初始化邏輯。

import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class CustomDataSourceConfig {
    @Bean
    public DataSource dataSource() {
        // 自定義數(shù)據(jù)源配置
        return new HikariDataSource();
    }
}

5.2 自定義 Spring Security 配置

通過繼承 WebSecurityConfigurerAdapter 類,可以自定義 Spring Security 的配置。

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class CustomSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/public/**").permitAll()
            .anyRequest().authenticated();
    }
}

6. 總結

Spring Boot 的“約定大于配置”理念極大地簡化了開發(fā)流程,但在實際項目中,我們?nèi)匀恍枰鶕?jù)需求自定義配置。通過實現(xiàn)相關接口(如 WebMvcConfigurer)并添加 @Configuration 注解,開發(fā)者可以靈活地擴展和定制 Spring Boot 的默認行為。

自定義配置的核心步驟如下:

  • 選擇合適的接口(如 WebMvcConfigurer)。
  • 創(chuàng)建配置類并添加 @Configuration 注解。
  • 重寫接口方法,實現(xiàn)自定義邏輯。

希望本文能幫助你更好地理解 Spring Boot 的自定義配置機制,并在實際項目中靈活運用!

到此這篇關于Spring Boot 約定大于配置:實現(xiàn)自定義配置的文章就介紹到這了,更多相關Spring Boot 約定大于配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring與Mybatis相結合實現(xiàn)多數(shù)據(jù)源切換功能

    Spring與Mybatis相結合實現(xiàn)多數(shù)據(jù)源切換功能

    這篇文章主要介紹了Spring與Mybatis相結合實現(xiàn)多數(shù)據(jù)源切換功能的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 關于Java中反射機制的深入講解

    關于Java中反射機制的深入講解

    反射(Reflection)是Java 程序開發(fā)語言的特征之一,它允許運行中的 Java 程序獲取自身的信息,并且可以操作類或?qū)ο蟮膬?nèi)部屬性,下面這篇文章主要給大家介紹了關于Java中反射機制的相關資料,需要的朋友可以參考下
    2018-08-08
  • Java JVM中線程狀態(tài)詳解

    Java JVM中線程狀態(tài)詳解

    這篇文章主要介紹了Java JVM中線程狀態(tài)詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的朋友可以參考一下
    2022-09-09
  • MyBatis的mapper.xml文件中入?yún)⒑头祷刂档膶崿F(xiàn)

    MyBatis的mapper.xml文件中入?yún)⒑头祷刂档膶崿F(xiàn)

    這篇文章主要介紹了MyBatis的mapper.xml文件中入?yún)⒑头祷刂档膶崿F(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java鎖之阻塞鎖介紹和代碼實例

    Java鎖之阻塞鎖介紹和代碼實例

    這篇文章主要介紹了Java鎖之阻塞鎖介紹和代碼實例,阻塞鎖與自旋鎖不同,它改變了線程的運行狀態(tài),需要的朋友可以參考下
    2014-09-09
  • Java中隊列Queue和Deque的區(qū)別與代碼實例

    Java中隊列Queue和Deque的區(qū)別與代碼實例

    學過數(shù)據(jù)結構的,一定對隊列不陌生,java也實現(xiàn)了隊列,下面這篇文章主要給大家介紹了關于Java中隊列Queue和Deque區(qū)別的相關資料,需要的朋友可以參考下
    2021-08-08
  • Java讀取DWG文件的完整步驟

    Java讀取DWG文件的完整步驟

    DWG 是 AutoCAD 的專有二進制格式,直接解析難度大,通過開源庫 Teigha File Converter(現(xiàn)更名 ODA File Converter)可實現(xiàn)格式轉(zhuǎn)換,間接讀取數(shù)據(jù),本文給大家介紹了Java讀取DWG文件的完整步驟,需要的朋友可以參考下
    2025-11-11
  • 一文總結 Shiro 實戰(zhàn)教程

    一文總結 Shiro 實戰(zhàn)教程

    shiro是apache的一個開源框架,是一個權限管理的框架,實現(xiàn) 用戶認證、用戶授權,這篇文章詳細總結了shiro用法,感興趣的同學可以參考閱讀
    2023-04-04
  • Autowired的注入過程源碼解析

    Autowired的注入過程源碼解析

    這篇文章主要為大家介紹了Autowired的注入過程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Spring?IOC容器使用詳細講解

    Spring?IOC容器使用詳細講解

    IOC-Inversion?of?Control,即控制反轉(zhuǎn)。它不是什么技術,而是一種設計思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-12-12

最新評論

房产| 吴江市| 克什克腾旗| 天祝| 犍为县| 错那县| 建湖县| 东辽县| 晋中市| 仪征市| 义马市| 嵩明县| 汶川县| 遵义市| 博罗县| 喀喇| 汽车| 桐梓县| 家居| 湾仔区| 抚松县| 柞水县| 丘北县| 南城县| 左云县| 丰原市| 太白县| 登封市| 宁海县| 靖西县| 荥经县| 嘉义县| 淳安县| 修武县| 海门市| 乐安县| 青海省| 松溪县| 胶州市| 揭西县| 新巴尔虎右旗|