SpringBoot詳細解析

1.什么是springboot

springboot也是spring公司開發的一款框架。為了簡化spring項目的初始化搭建的。那么spring對應springboot有什么缺點呢?

spring項目搭建的缺點:

  • 配置麻煩
  • 依賴
  • tomcat啟動慢

?2.springboot的特點

  • 自動配置

Spring Boot的自動配置是一個運行時(更準確地說,是應用程序啟動時)的過程,考慮了眾多因素,才決定Spring配置應該用哪個,不該用哪個。該過程是SpringBoot自動完成的。

  • ?起步依賴

起步依賴本質上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。

簡單的說,起步依賴就是將具備某種功能的坐標打包到一起,并提供一些默認的功能。

  • 輔助功能

提供了一些大型項目中常見的非功能性特性,如嵌入式服務器tomcat、安全、指標,健康檢測、外部配置等。?

3.springboot常用的配置文件種類

springboot提供了兩種配置文件:

第一種:properties文件

第二種:yml文件

不管是哪種他們的前綴都是application

yml格式:

server:port: 8088servlet:context-path: /bbb

??properties格式:

#key=value
server.port=8080
server.servlet.context-path=/aaa

?如果上面兩個文件同時存在,properties文件的優先級高。

4.springboot中java如何讀取配置文件中的內容

?我們習慣把一些自己的信息放入配置文件中,便于修改。比如OSS. 支付。 我們還希望通過java代碼能夠讀取到配置文件中自己的信息。

springboot提供了兩種方式用于讀取springboot配置文件中信息的方式。

  • 第一種: @ConfigurationProperties:

?使用在類上 @ConfigurationProperties(prefix="前綴")

  • ?第二種: @Value:

?它只能讀取基本類型和字符串類型

?5.profile多環境配置

我們在開發Spring Boot應用時,通常同一套程序會被安裝到不同環境,比如:開發、測試、生產等。其中數據庫地址、服務器端口等等配置都不同,如果每次打包時,都要修改配置文件,那么非常麻煩。profile功能就是來進行動態配置切換的。

1) profile配置方式

  • 多profile文件方式
  • yml多文檔方式

2) profile激活方式

  • 配置文件
  • 命令行參數

我們需要針對不同的環境來創建不同的配置文件。使用profile來激活對應的配置文件

比如:

  • application-dev.properties? ?[開發環境的配置文件]
  • application-test.properties? [測試環境的配置文件]
  • application-pro.properties? ?[生產環境的配置文件]

?相同配置依然還是放在application.properties中。

如何激活對于的配置文件。激活的方式有兩種:

第一種: 在application配置文件中

#激活對應環境的配置文件
spring.profiles.active=pro

第二種: 部署時如何激活對應環境的配置

命令行參數:java –jar xxx.jar --spring.profiles.active=dev?

6.springboot注冊web組件

web組件表示的就是servlet,filter組件。

在spring中創建servlet時的步驟:

[1]創建一個類并繼承HttpServlet并重寫service方法

[2]注冊到web.xml文件中

<servlet><servlet-name></servlet-name><servlet-class>自己的servlet或第三方的servlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name></servlet-name><url-partern>/my</url-partern>
</servlet-mapping>

? 在springboot中沒有web.xml文件,它如何注冊servlet? springboot提供了一個配置類。

創建一個Servlet:

public class MyServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("進去servlet了");}
}

?創建一個配置:

package com.ls.config;import com.ls.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.logging.Filter;/*** @program: springboot* @description:* @author: 1suo* @create: 2024-07-11 15:31**/
@Configuration //表示該類為配置類,等價于之前的xml配置文件
public class MyConfig {@Bean //等價于<bean標簽.public ServletRegistrationBean  myServlet(){ServletRegistrationBean bean=new ServletRegistrationBean();bean.setServlet(new MyServlet());bean.setName("my");bean.setLoadOnStartup(1);bean.addUrlMappings("/my");return bean;}
}

?7.springboot包掃描的原理

?ssm項目必須加包掃描,而現在springboot沒有在寫包掃描了。

springboot自帶了包掃描的功能。核心在主類上@SpringBootApplication上,它是一個復合注解。里面包含@EnableAutoConfiguration開啟自動配置,里面包含@AutoConfigurationPackage@Import({AutoConfigurationPackages.Registrar.class})需要導入一個自動配置包的類。加載主類所在的包,并按照該包進行掃描。

我們如果不想讓他掃描主類所在的包,我們可以使用@CompentScan(basePackages={})來指定自己的包。

8.?springboot的自動裝配原理

SSM項目,都需要加載前端控制器DispatcherServlet. 而現在的springboot并沒有加載DispatcherServlet。 springboot具備自動裝配的功能。

當springboot啟動時,加載了使用@SpringbootApplication注解的類,該注解是一個符合注解,包含@EnableAutoConfiguration該注解開啟了自動裝配功能,該注解也是一個符合注解里面包含@Import({AutoConfigurationImportSelector.class}),導入AutoConfigurationImportSelector該類自動裝配選擇器類,該類會自動加載很多自動裝配。每個自動裝配會完成對應的自動裝配功能。

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

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

相關文章

Docker 安裝ros 使用rviz 等等圖形化程序

Docker 安裝ros 使用rviz 等等圖形化程序 ubuntu 版本與ros 發行版本對應 如何安裝其它版本ros 此時考慮使用docker 易于維護 地址&#xff1a; https://hub.docker.com/r/osrf/ros 我主機是 ubuntu22.04 使用這個標簽 melodic-desktop-full 1 clone 鏡像到本機 docker pu…

Android OkHttp3中HttpLoggingInterceptor使用

目錄 一 概述1.1 日志級別 二 使用2.1 引入依賴2.2 創建對象2.3 添加攔截器 三 結果展示3.1 日志級別為BODY3.2 日志級別為BASIC3.3 日志級別為HEADERS 參考 一 概述 HttpLoggingInterceptor是OkHttp3提供的攔截器&#xff0c;用來記錄HTTP請求和響應的詳細信息。 1.1 日志級…

基于IDEA的Lombok插件安裝及簡單使用

lombok介紹 Lombok能以注解形式來簡化java代碼&#xff0c;提高開發效率。開發中經常需要寫的javabean&#xff0c;都需要花時間去添加相應的getter/setter&#xff0c;也許還要去寫構造器、equals等方法&#xff0c;而且需要維護。而Lombok能通過注解的方式&#xff0c;在編譯…

Spring AOP 實現 Excel 導出統一處理

你好&#xff0c;我是柳岸花開。在實際開發中&#xff0c;經常會遇到需要導出 Excel 數據的需求。為了避免代碼重復&#xff0c;我們可以使用 Spring AOP&#xff08;面向切面編程&#xff09;來實現 Excel 導出的統一處理。本文將介紹如何使用 Spring AOP 在項目中統一處理 Ex…

【學習筆記】無人機(UAV)在3GPP系統中的增強支持(十三)-更換無人機控制器

引言 本文是3GPP TR 22.829 V17.1.0技術報告&#xff0c;專注于無人機&#xff08;UAV&#xff09;在3GPP系統中的增強支持。文章提出了多個無人機應用場景&#xff0c;分析了相應的能力要求&#xff0c;并建議了新的服務級別要求和關鍵性能指標&#xff08;KPIs&#xff09;。…

枚舉的高階用法之枚舉里寫方法以及注入spring的bean

1、前言 一般我們使用枚舉都是用來定義一些常量。比如我們需要一個表示訂單類(pc訂單、手機訂單)的常量,那我們就可以使用枚舉來實現,如下: AllArgsConstructor public enum OrderTypeEnum{PC("PC", "電腦端"),PHONE("PHONE", "手機端&quo…

[計網初識2]web的3個核心標準html,url,http

學習內容 HTML,URL,HTTP的構成 1.規范web的3個核心標準&#xff1f; HTML(Hyper Text Markup Language),規范網頁內容和版面布局的表示標準。URL(Uniform Resource Locator)&#xff0c;規范網頁識別符格式和含義的表示標準。HTTP(HyperText Transfer Protocl),規范游覽器如…

JIRA的高級搜索JIRA Query Language(JQL)詳解

JIRA的高級搜索功能非常強大&#xff0c;允許用戶通過JIRA Query Language&#xff08;JQL&#xff09;來構建復雜的查詢。以下是一些常用的高級搜索用法和示例&#xff1a; 1. 基本語法 JQL的基本語法包括字段、運算符和值的組合。例如&#xff1a; field operator value2.…

<數據集>UA-DETRAC車輛識別數據集<目標檢測>

數據集格式&#xff1a;VOCYOLO格式 圖片數量&#xff1a;20500張 標注數量(xml文件個數)&#xff1a;20500 標注數量(txt文件個數)&#xff1a;20500 標注類別數&#xff1a;4 標注類別名稱&#xff1a;[car, van, others, bus] 序號類別名稱圖片數框數1car201871259342…

鋇錸ARMxy控制器在智能網關中的應用

隨著IoT物聯網技術的飛速發展&#xff0c;智能網關作為連接感知層與網絡層的樞紐&#xff0c;可以實現感知網絡和通信網絡以及不同類型感知網絡之間的協議轉換。鋇錸技術的ARMxy系列控制器憑借其高性能、低功耗和高度靈活性的特點&#xff0c;在智能網關中發揮了關鍵作用&#…

數據結構回顧(Java)

1.數組 線性表 定義的方式 int[] anew int[10] 為什么查詢快&#xff1f; 1.可以借助O(1)時間復雜度訪問某一元素&#xff0c; 2.地址連續&#xff0c;邏輯連續 3.數組長度一旦確定就不可以被修改 當需要擴容的時候需要將老數組的內容復制過來 在Java中數組是一個對象 Ar…

bug定位策略

前提--用戶環境層面 hosts異常&#xff1a;hosts文件主要是加快某個域名或者網站的解析速度&#xff0c;從而達到快速訪問的作用&#xff0c;也可以屏蔽網站。hosts異常可能會導致部分網頁無法訪問&#xff0c;能夠加載&#xff0c;但是網頁無法正常顯示&#xff1b;測試環境臟…

記錄些Redis題集(2)

Redis 的多路IO復用 多路I/O復用是一種同時監聽多個文件描述符&#xff08;如Socket&#xff09;的狀態變化&#xff0c;并能在某個文件描述符就緒時執行相應操作的技術。在Redis中&#xff0c;多路I/O復用技術主要用于處理客戶端的連接請求和讀寫操作&#xff0c;以實現高并發…

Python_使用pyecharts構建折線圖

Pyecharts簡介 Pyecharts是一款將python與echarts結合的強大的數據可視化工具&#xff0c;使用 pyecharts 可以生成獨立的網頁&#xff0c;也可以在 flask , Django 中集成使用。echarts &#xff1a;百度開源的一個數據可視化 JS 庫&#xff0c;主要用于數據可視化。pyechart…

嵌入式linux相機 框圖

攝像頭讀取數據顯示到LCD流程 重點&#xff1a;攝像頭數據&#xff08;yuyv&#xff0c;mjpeg&#xff0c;rgb&#xff09;&#xff08;640,320&#xff09;與LCD顯示數據&#xff08;RGB&#xff09;&#xff08;480&#xff0c;240&#xff09;不同&#xff1b;需要轉換&…

ReactRouter v6升級的步驟

React Router v6 引入了一個 Routes 組件&#xff0c;它有點像 Switch &#xff0c;但功能要強大得多。與 Switch 相比&#xff0c; Routes 的主要優勢在于&#xff1a; <Routes> 中的所有 <Route> 和 <Link> 都是相對的。這導致在 <Route path> 和 &…

項目文章|EMBO J(IF=9.4):16S+代謝組解析腸道菌群代謝物改善高脂飲食誘導的胰島素抵抗機制

腸道菌群及其代謝產物與肥胖相關疾病&#xff08;如2型糖尿病&#xff09;密切相關&#xff0c;但其因果關系和潛在機制尚不清楚。研究表明&#xff0c;肥胖與腸道微生物的豐度和多樣性變化有關&#xff0c;例如&#xff0c;高脂飲食&#xff08;HFD&#xff09;誘導的肥胖會增…

AIGC率超標?掌握論文去AI痕跡的高效策略

隨著 AI 技術迅猛發展&#xff0c;各種AI輔助論文寫作的工具層出不窮&#xff01; 為了防止有人利用AI工具進行論文代寫&#xff0c;在最新的學位法中已經明確規定“已經獲得學位者&#xff0c;在獲得該學位過程中如有人工智能代寫等學術不端行為&#xff0c;經學位評定委員會…

ESP32CAM物聯網教學11

ESP32CAM物聯網教學11 霍霍webserver 在第八課的時候&#xff0c;小智把樂鑫公司提供的官方示例程序CameraWebServer改成了明碼&#xff0c;這樣說明這個官方程序也是可以更改的嘛。這個官方程序有四個文件&#xff0c;一共3500行代碼&#xff0c;看著都頭暈&#xff0c;小智決…

S7-200smart與C#通信

https://www.cnblogs.com/heizao/p/15797382.html C#與PLC通信開發之西門子s7-200 smart_c# s7-200smart通訊庫-CSDN博客https://blog.csdn.net/weixin_44455060/article/details/109713121 C#上位機讀寫西門子S7-200SMART PLC變量 教程_嗶哩嗶哩_bilibilihttps://www.bilibili…