SpringBoot的前世今生

1. Spring

Spring 特性:IOC、AOP、DI,

Spring:解決對象耦合的問題,在 applicationContext.xml 中申明 bean,Spring在啟動時會解析xml文件進行裝載,當需要用對象時直接從容器中拿取bean。

Spring萬能膠:方便集成各種插件中間件。

Spring本身的這個組件是輕量級,但是配置是重量級。因為所有組件的描述、依賴都需要添加對應的xml配置。

用SpringMVC去構建一個web項目的流程:

→ 創建一個項目結構(maven/ gradle)

→ pom.xml中 添加 spring依賴,spring mvc、servlet api 等等的依賴?

→ 配置WEB-INF/web.xml, 配置 DispatcherServlet (spring mvc是在 jsp servlet 之上做的封裝,所以需要配置dispatcherservlet 去攔截spring的請求)?

→?啟動一個spring mvc的配置,Dispatcher-serclet.xml?

?創建一個Controller 發布一個 http 請求?

→發布到 jsp/servelt 容器

可以看出,除了?創建一個Controller 發布一個 http 請求,其它步驟都是通用模板

2. SpringBoot

SpringBoot 產生的原因:

① Spring配置的重量級。

② 對于項目構建過程中spring需要添加太多通用性模板性的配置。

③ 微服務萌芽階段,正好也需要這樣一個輕量級的服務化架構。

到底什么是 SpringBoot?——Applications that you can just run

(可以認為 SpringBoot 是 SpringFramework 的一個腳手架,可以使用SpringBoot 快速構建一個基于 SpringFramework 的應用 )

約定大于配置,使用 SpringBoot 只需關注?→?創建一個Controller 發布一個 http 請求 步驟,其它步驟 SpringBoot 已按照默認約定自動完成。

  • 只要依賴 Spring-boot-starter-web 的 jar 包,就會自動內置一個 tomcat容器;(默認支持四種web容器:tomcat、jetty、undertow、reactor)
  • 項目結構
  • 默認提供了配置文件 application.properties. (項目中 ${key} 的引用會默認從application.properties中找key對應的value)
  • starter啟動依賴-如果是一個webstarter,默認認為你是去構建一個spring mvc的應用。

SpringBoot的特性

  • EnableAutoConfiguration 自動裝配
  • Starter 啟動依賴 依賴于自動裝配的技術
  • Actuator 監控 提供了一些endpoint,可以基于http、jmx形式去訪問health、mrtrics信息...
  • SpringBoot CLI (命令行操作的功能,可以在客戶端基于groovy腳本快速構建springboot應用)

(這些特性并非springboot創造的,spring也支持特性,不過SpringBoot在Spring基礎上進一步做了封裝)

3. Spring 注解驅動的發展過程

SpringBoot的快速發展某種程度上依賴于Spring的注解驅動。

  • spring 1.x :IOC的功能
  • spring 2.x: 引入了一些注解@Required/ @Repository/ @Aspect

????????????????spring 2.5:@Controller、@Seivice、@Component、@RequestMapping

  • spring 3.x:里程碑版本,
    • ?@Configuration 取代 xml 文件,去 xml 化。核心目的:把bean對象更加便地加載到springIOC容器中
    • @ComponentScan:掃描@Service、@Repository、@Controller
    • @Import
    • @Enable模塊驅動:自動把模塊相關組件的bean自動裝配到IOC容器中。(如果沒有這種方式,需要用@bean去裝配,很難裝配完全)(Enable可以自定義)

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

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

相關文章

微信小程序自行diy選擇器有效果圖

效果圖 實現思路 主要運用到小程序自帶視圖容器《swiper》 運用到的屬性《vertical》《display-multiple-items》《current》《animationfinish》 滑動方向變為縱向 vertical:true 顯示的滑塊數量 display-multiple-items:5 當前所在滑塊的 index curr…

【實用教程】如何快速搭建一套私有的埋點系統?

這篇教程將基于開源項目-ClkLog,教大家快速搭建一套自有的埋點系統,從0開始完成數據采集、分析與展示,全流程掌控用戶行為數據。 ClkLog是一款支持私有化部署的全開源用戶行為數據采集與分析系統,兼容Web、App、小程序多端埋點&am…

falsk模型-flask_sqlalchemy增刪改查

1、增、刪、改 增 home_bp.route(/useradd) def user_add():users []for i in range(10,20):user User()user.name 冰冰 str(i)user.age 20iusers.append(user)try:db.session.add_all(users)db.session.commit()return jsonify({code:1,info:success})except Exception…

【專題】機器學習期末復習資料

機器學習期末復習資料(題庫) 鏈接:https://blog.csdn.net/Pqf18064375973/article/details/148105494?sharetypeblogdetail&sharerId148105494&sharereferPC&sharesourcePqf18064375973&sharefrommp_from_link 【測試】 Art…

SpringCloud Alibaba微服務-- Sentinel的使用(筆記)

雪崩問題: 小問題引發大問題,小服務出現故障,處理不當,可能導致整個微服務宕機。 假如商品服務出故障,購物車調用該服務,則可能出現處理時間過長,如果一秒幾十個請求,那么處理時間過…

5:OpenCV—圖像亮度、對比度變換

1.更改圖像和視頻的亮度 更改亮度 更改圖像的亮度是常用的點操作。在此操作中,圖像中每個像素的值應增加/減少一個常數。要更改視頻的亮度,應對視頻中的每一幀執行相同的操作。 如果要增加圖像的亮度,則必須為圖像中的每個像素添加一些正常…

【工作流】Fastgpt配置豆包模型-火山引擎

V4.9.7 Fastgpt現在不通過oneapi 來配置模型和渠道了, 可以直接在頁面進行設置 首先在賬號- 模型提供商里面 填入豆包的信息: 渠道名隨便填,廠商選豆包, 然后選3個模型,如圖所示 如果沒有填入模型映射的話是沒辦法 …

2025年系統架構師---綜合知識卷

1.進程是一個具有獨立功能的程序關于某數據集合的一次運行活動,是系統進行資源分配和調度的基本單位(線程包含于進程之中,可并發,是系統進行運算調度的最小單位)。一個進程是通過其物理實體被感知的,進程的物理實體又稱為進程的靜態描述,通常由三部分組成,分別是程序、…

LangChain4j入門AI(六)整合提示詞(Prompt)

前言 提示詞(Prompt)是用戶輸入給AI模型的一段文字或指令,用于引導模型生成特定類型的內容。通過提示詞,用戶可以告訴AI“做什么”、 “如何做”以及“輸出格式”,從而在滿足需求的同時最大程度減少無關信息的生成。有…

如何使用 Docker Compose 部署 Immich

如何使用 Docker Compose 部署 Immich Immich 是一個開源的自建照片和視頻備份解決方案,通過 Docker 部署可以快速構建一個穩定的自主管理系統。本文將帶你一步步完成使用 Docker Compose 部署 Immich 的過程,幫助你在生產環境中實現高效的媒體管理。 1…

Mac遠程連接Windows電腦教程

在 Mac 上通過微軟官方遠程桌面工具(Windows App)連接局域網內的 Windows 電腦,需按照以下步驟操作: 一、準備工作 確認 Windows 版本支持遠程連接 Windows 專業版/企業版/教育版 支持遠程桌面功能。家庭版不支持,需使…

從0到1打造AI Copilot:用SpringBoot + ChatGPT API實現智能開發助手

本文將從0到1系統性地講解如何基于SpringBoot與OpenAI ChatGPT API打造一款智能開發助手(AI Copilot)。文章首先介紹AI Copilot的背景與價值,接著深入架構設計與環境準備,然后通過詳盡的代碼示例演示SpringBoot項目的搭建、依賴配…

Crawl4AI:高效的AI數據抓取工具

在大數據時代,抓取并處理大量數據是進行人工智能(AI)研究與開發的基礎。而網絡爬蟲是獲取網頁數據的重要工具。今天,我想介紹一個功能強大的爬蟲框架——Crawl4AI,它為數據抓取和機器學習任務提供了無縫的支持。Crawl4…

從單鏈表 list 中刪除第 i 個元素--Python

從單鏈表 list 中刪除第 i 個元素 一、問題引入二、解題步驟1.思維導圖2.解題步驟 三、代碼實現四、個人總結 一、問題引入 請編寫程序,將 n 個整數順次插入一個初始為空的單鏈表的表頭。隨后對任意給定的位序 i,刪除鏈表中第 i 個結點。注意&#xff1…

git學習與使用(遠程倉庫、分支、工作流)

文章目錄 前言簡介git的工作流程git的安裝配置git環境:git config --globalgit的基本使用新建目錄初始化倉庫(repository)添加到暫存區新增/修改/刪除 文件狀態會改變 提交到倉庫查看提交(commit)的歷史記錄git其他命令…

九、日志分析和系統故障排查

目錄 1、日志分析1.1、日志介紹1.1.1、日志的功能1.1.2、日志文件的分類1.1.3、日志保存位置1.2、rsyslog服務1.2.1、發送日志到遠程日志服務器1.3、查看日志文件1.3.1、/var/log/messages文件的內容示例1.3.2、用戶登錄、退出系統的相關日志1.4、日志級別1.5、程序日志分析1.6…

C++ 非類成員變量 非類成員函數 全局變量 使用

1 使用特點 加 :: 變量使用 #include <iostream> using namespace std; int qwer 100; int asdf 900; void sitl(){std::cout <<"globe dog is sitting." << std::endl; }class Cat { public:static int num;}; int Cat::num 99;class Dog { …

【小烏龍問題】stm32供電,用過的ch340缺無法被識別

解決&#xff1a;更換正確供電&#xff08;stlink&#xff09;&#xff0c;不能用usb-ttl的僅供電&#xff0c;會干擾的&#xff01;&#xff01;&#xff01;&#xff01; 原來用stlink供電&#xff0c;今天沒拿就想著usb-ttl的電源供電&#xff0c;然后用ch340傳輸數據&…

使用 Navicat 17 for PostgreSQL 時,請問哪個版本支持 PostgreSQL 的 20150623 版本?還是每個版本都支持?

&#x1f9d1;?&#x1f4bb; PostgreSQL 用戶 使用 Navicat 17 for PostgreSQL 時&#xff0c;請問哪個版本支持 PostgreSQL 的 20150623 版本&#xff1f;還是每個版本都支持&#xff1f; &#x1f9d1;?&#x1f527; 官方技術中心 Navicat Premium 17 和 Navicat for P…

游戲引擎學習第305天:在平臺層中使用內存 Arena 的方法與思路

回顧前一天內容&#xff0c;并為今天的開發工作設定方向 我們正在直播制作完整游戲&#xff0c;當前正在實現一個精靈圖&#xff08;sprite graph&#xff09;的排序系統。排序的代碼已經寫完&#xff0c;過程并不復雜&#xff0c;雖然還沒做太多優化&#xff0c;但總體思路比…