springboot的基礎要點

Spring Boot 的核心設計理念是 ??"約定優于配置"??(Convention Over Configuration),旨在簡化 Spring 應用的初始搭建和開發過程。以下是需要掌握的核心基礎要點:


?一、核心機制?

  1. ?自動配置 (Auto-Configuration)??

    • 通過 spring-boot-autoconfigure 自動配置 Bean
    • 條件注解控制:@ConditionalOnClass, @ConditionalOnMissingBean
    • 查看自動配置報告:啟動時添加 --debug 參數
  2. ?起步依賴 (Starter Dependencies)??

    • 一站式引入相關技術棧(如 spring-boot-starter-web 包含 Web+Tomcat+JSON)
    • 避免版本沖突(由 Spring Boot 統一管理)

?二、核心注解?

?注解??作用?
@SpringBootApplication復合注解:@Configuration + @ComponentScan + @EnableAutoConfiguration
@RestController等價于 @Controller + @ResponseBody
@ConfigurationProperties將配置文件綁定到 Java 對象(如 application.yml 中的屬性)
@EnableConfigurationProperties啟用配置綁定

?三、配置文件?

  1. ?優先級?(從高到低):

    命令行參數 > 外部配置文件 > 內部配置文件
    • 內部配置文件:application.properties > application.yml
    • 外部配置文件:Jar 包同級目錄的 /config 文件夾 > 根目錄
  2. ?多環境配置?

    # application-dev.yml
    server:port: 8081
    ---
    # application-prod.yml
    server:port: 80
    • 激活環境:spring.profiles.active=dev

?四、常用功能組件?

  1. ?數據訪問?

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    • 無需配置數據源:默認使用內存數據庫(H2)
    • 自定義數據源:spring.datasource.url=jdbc:mysql:///test
  2. ?Web MVC?

    • 靜態資源路徑:/static, /public, /resources, /META-INF/resources
    • 攔截器配置:
      @Override
      public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/api/**");
      }
  3. ?事務管理?

    @Transactional  // 直接在 Service 層添加注解
    public void updateUser(User user) {userRepository.save(user);logRepository.insertLog(user);
    }

?五、運維監控?

  1. ?Actuator 健康檢查?

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    • 暴露端點:management.endpoints.web.exposure.include=health,info,metrics
    • 訪問:http://localhost:8080/actuator/health
  2. ?日志配置?

    # application.properties
    logging.level.root=INFO
    logging.level.com.example.service=DEBUG
    logging.file.name=app.log

?六、最佳實踐?

  1. ?目錄結構規范?

    src/main/java└─ com.example├─ Application.java        # 主啟動類├─ controller├─ service├─ repository└─ config
  2. ?全局異常處理?

    @ControllerAdvice
    public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception ex) {return ResponseEntity.status(500).body("服務器開小差了");}
    }
  3. ?熱部署技巧?

    <!-- spring-boot-devtools 依賴 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
    </dependency>
    • 修改代碼后自動重啟(IDEA 需開啟 Build > Compiler > Build project automatically

?七、調試技巧?

  1. ?查看自動配置列表?
    java -jar your-app.jar --debug
  2. ?Bean 依賴關系圖?
    @SpringBootApplication
    public class Application {public static void main(String[] args) {// 啟動時打印Bean圖new SpringApplicationBuilder(Application.class).logStartupInfo(true).run(args);}
    }

?避坑指南?:

  1. 避免使用 @Autowired 注入靜態變量(使用 setter 注入)
  2. 不要在主類中寫業務邏輯(保持為純啟動入口)
  3. 多環境配置務必關閉 spring.config.use-delimiter(防止YAML解析錯誤)

?終極建議?:理解自動配置原理比死記配置更重要,遇到問題時查看 spring-boot-autoconfigure 源碼。掌握基礎后,再配合之前的"騷操作",可大幅提升開發效率!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918564.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

lesson36:MySQL從入門到精通:全面掌握數據庫操作與核心原理

目錄 一、引言&#xff1a;為什么選擇MySQL&#xff1f; 二、MySQL安裝與登錄配置 2.1 環境準備 2.2 登錄指令詳解 三、數據庫核心操作 3.1 數據庫生命周期管理 3.2 數據庫存儲引擎選擇 四、數據表設計與操作 4.1 表結構創建&#xff08;含數據類型詳解&#xff09; …

Spring源碼解析 - SpringApplication run流程-prepareContext源碼分析

prepareContext源碼分析 private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context,ConfigurableEnvironment environment, SpringApplicationRunListeners listeners,ApplicationArguments applicationArguments, Bann…

HIS系統:醫院信息化建設的核心,采用Angular+Java技術棧,集成MySQL、Redis等技術,實現醫院全業務流程管理。

HIS系統在醫院信息化建設中扮演著核心的角色。它是一個綜合性的信息系統&#xff0c;旨在管理和運營醫院的各種業務&#xff0c;包括門診、住院、財務、物資、科研等。技術細節&#xff1a;前端&#xff1a;AngularNginx后臺&#xff1a;JavaSpring&#xff0c;SpringBoot&…

深度學習-卷積神經網絡-LeNet

卷積神經網絡是一種專門用于處理具有網格結構數據&#xff08;如圖像、音頻等&#xff09;的深度學習模型。它通過卷積層自動提取數據中的特征&#xff0c;利用局部連接和參數共享的特性減少了模型的參數數量&#xff0c;降低了過擬合的風險&#xff0c;同時能夠有效地捕捉數據…

【Java項目與數據庫、Maven的關系詳解】

Java項目與數據庫、Maven的關系詳解 一、Java項目是否都需要連接本地數據庫&#xff1f; 不一定&#xff0c;這取決于項目類型和需求&#xff1a; 1. 需要數據庫的項目類型項目類型數據庫作用典型場景Web應用存儲用戶數據/業務數據電商系統、CMS服務端程序持久化數據金融交易系…

兩個Maven工程,使用idea開發,工程A中依賴了工程B,改了工程B,工程A如何獲取最新代碼

兩個Maven工程&#xff0c;使用idea開發&#xff0c;工程A中依賴了工程B&#xff0c;改了工程B&#xff0c;工程A如何獲取最新代碼 如果工程B的版本是快照&#xff0c;那么如下。 步驟一 工程B 執行 clean package install deploy 步驟二 工程A 刷新Maven

奧比中光與地平線、地瓜機器人達成戰略合作,攜手推動機器人智能化

摘要&#xff1a;機器人“慧眼”與“智腦”強強聯合&#xff01;8月11日&#xff0c;奧比中光與地平線及其控股子公司地瓜機器人在北京簽訂合作協議&#xff0c;雙方將在機器人智能化領域展開深度合作&#xff0c;充分發揮各自的技術與產品優勢&#xff0c;攜手推動機器人產業的…

【Linux】Tomcat

Tomcat簡介Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器&#xff0c;屬于輕量級應用服務器&#xff0c;在中小型系統和 并發訪問用戶不是很多的場合下被普遍使用&#xff0c;Tomcat 具有處理HTML頁面的功能&#xff0c;它還是一個Servlet和 JSP容器Tomcat的使用安裝ja…

Putting it all together 將所有內容整合在一起

官方鏈接 https://www.youtube.com/watch?vAa_FAA3v22g&t1s Task1 Putting It All Together 將所有內容整合在一起 圖片版 文字版 Putting It All Together 將所有內容整合在一起 From the previous modules, youll have learned that quite a lot of things go on b…

Python 閉包詳解:從變量作用域到實戰案例

一、變量作用域基礎在 Python 中&#xff0c;變量根據作用范圍可分為三類&#xff1a;全局變量&#xff1a;定義在函數外部的變量&#xff0c;作用范圍是整個程序。如果在函數內部需要修改全局變量&#xff0c;必須使用global關鍵字聲明。局部變量&#xff1a;定義在函數內部的…

Docker 跨主機容器之間的通信macvlan

默認一個物理網卡&#xff0c;只有一個物理mac地址&#xff0c;虛擬多個mac地址 缺點&#xff1a;每次需要手動配置ip地址&#xff0c;容易ip地址沖突。類似于保存到execl表格里面。 兩臺物理機&#xff1a; docker-01和docker-02 創建macvlan網絡 [rootdocker-01 ~]# docker n…

android 換膚框架詳解1-換膚邏輯基本

android 換膚框架詳解1-換膚邏輯基本-CSDN博客 android 換膚框架詳解2-LayoutInflater源碼解析-CSDN博客 android 換膚框架詳解3-自動換膚原理梳理-CSDN博客 換膚框架流程 1&#xff0c;通過AssetManager獲取換膚的資源文件 2&#xff0c;通過原文件中的resId獲取到res名稱…

NEON性能優化總結

轉自 NEON優化&#xff1a;性能優化經驗總結-CSDN博客 NEON優化&#xff1a;性能優化經驗總結 1. 什么是 NEON Arm Adv SIMD 歷史 2. 寄存器 3. NEON 命名方式 4. 優化技巧 5. 優化 NEON 代碼(Armv7-A內容&#xff0c;但區別不大) 5.1 優化 NEON 匯編代碼 …

計算機網絡摘星題庫800題筆記 第2章 物理層

第2章 物理層2.1 物理層概述題組闖關1.采用以下哪種設備&#xff0c;可以使數字信號傳輸得更遠 ( )。 A. 放大器 B. 中繼器 C. 網橋 D. 路由器1.【參考答案】B 【解析】選項 A 放大器只是單純地放大信號、抑制噪音和干擾。選項 B 中繼器是把一根線纜中的電或者光信號傳遞給另一…

導入文件到iPhone實現

我們有時候開發需要加載一些自己的文件&#xff0c;這個時候就需要導入文件到iPhone等設備。在info里面open as source code&#xff0c;加入如下配置&#xff1a;<!-- 開啟 iTunes / Finder 文件共享 --><key>UIFileSharingEnabled</key><true/>或者o…

Ubuntu Server系統安裝磁盤分區方案

最近打算把家里的舊電腦利用起來&#xff0c;裝上Ubuntu Server 24.04.3 LTS作為一個家用NAS服務器&#xff0c;但是給舊電腦安裝系統時遇到了一些問題&#xff0c;遂記錄下來 GPT分區與MBR分區 GPT 指的是 GUID Partition Table&#xff08;全局唯一標識分區表&#xff09;&am…

1小時 MySQL 數據庫基礎速通

目錄 一、MySQL安裝配置 1、下載mysql 2、下載mysql-shell 二、MySQL基本概念 1. 數據庫&#xff08;Database&#xff09; 2. 表&#xff08;Table&#xff09; 3. 數據類型&#xff08;Data Type&#xff09; 4. 主鍵&#xff08;Primary Key&#xff09; 5. 索引&am…

HTTP應用層協議-長連接

HTTP應用層協議-長連接 關于 connection 報頭 HTTP 中的 Connection 字段是 HTTP 報文頭的一部分&#xff0c;它主要用于控制和管理客戶端與服務器之間的連接狀態 核心作用 ? 管理持久連接&#xff1a;Connection 字段還用于管理持久連接&#xff08;也稱為長連接&#xff09;…

2020/12 JLPT聽力原文 問題一 4番

4番&#xff1a;ホテルの受付で女の人と男の人が話しています。女の人はどこでパソコンを使いますか。女&#xff1a;すみません、パソコンの貸出ってできますか。部屋で仕事をしたいんですけど。 男&#xff1a;申し訳ございません。貸出はしていないんですが、二階にビジネス…

《在 Spring Boot 中安全使用 Qwen API-KEY:環境變量替代明文配置的最佳實踐》

《在 Spring Boot 中安全使用 Qwen API-KEY&#xff1a;環境變量替代明文配置的最佳實踐》 想要的效果其實就是 把 Qwen API-KEY 放到系統環境變量中&#xff0c;然后在 application.yml 里通過占位符讀取&#xff0c;而不寫明文。 這樣即便 application.yml 被提交到 Git&…