Spring 6 第1章——概述

一.Spring是什么

  1. Spring是一款主流的Java EE輕量級(體積小、不需要依賴其它組件)開源框架
  2. Spring的目的是用于簡化Java企業級應用的開發難度和開發周期
  3. Spring的用途不僅限于服務端的開發,從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益
  4. Spring框架除了自己提供功能外,還提供整合其它技術和框架的能力

二、Spring的狹義和廣義

  1. 廣義上的Spring:Spring技術棧
    1. 廣義上的Spring,泛指以Spring Framework為核心的Spring技術棧
    2. 經過十多年的發展,Spring已經不再是一個單純的應用框架,而是逐漸發展成為一個由多個不同的子項目(模塊)組成的成熟技術,例如,Spring Framework、Spring MVC、Spring Boot、Spring Cloud、Spring Data、Spring Security等,其中Spring Framework是其他子項目的基礎
  2. 狹義上的Spring:Spring Framework
    1. 狹義的Spring特指Spring Framework,通常我們將它稱為Spring框架
    2. Spring有兩個最核心模塊:(1)IoC:Inverse if Control,翻譯為“控制反轉”,指把創建對象過程交給Spring進行管理(2)AOP:Aspect Oriented Programming的簡寫,翻譯為“面向切面編程”。AOP用來封裝多個類的公共行為,將那些與業務無關,卻為業務模塊所共用的邏輯封裝起來,減少系統的重復代碼,降低模塊間的耦合度。另外,AOP還解決一些系統層面上的問題,比如:日志、事務、權限等

三、Spring Framework特點

  1. 非侵入式:使用 Spring Framework 開發應用程序時,Spring 對應用程序本身的結構影響非常小。對領域模型可以做到零污染;對功能性組件也只需要使用幾個簡單的注解進行標記,完全不會破壞原有結構,反而能將組件結構進一步簡化。這就使得基于 Spring Framework 開發應用程序時結構清晰、簡潔優雅
  2. 控制反轉:IoC——Inversion of Control,翻轉資源獲取方向。把自己創建資源、向環境索取資源變成環境將資源準備好,我們享受資源注入
  3. 面向切面編程:AOP——Aspect Oriented Programming,在不修改源代碼的基礎上增強代碼功能
  4. 容器:Spring IoC是一個容器,因為它包含并且管理組件對象的生命周期。組件享受到了容器化的管理,替程序員屏蔽了組件創建過程中的大量細節,極大的降低了使用門檻,大幅度提高了開發效率
  5. 組件化:Spring實現了使用簡單的組件配置組合成一個復雜的應用。在Spring中可以使用XML和Java注解組合這些對象。這使得我們可以基于一個個功能明確、邊界清晰的組件有條不紊的搭建超大型復雜應用系統
  6. 一站式:在IoC和AOP的基礎上可以整合各種企業應用的開源框架和優秀的第三方類庫。而且 Spring 旗下的項目已經覆蓋了廣泛領域,很多方面的功能性需求可以在 Spring Framework 的基礎上全部使用 Spring 來實現

四、Spring模塊組成

  1. 該圖中包含了Spring框架的所有模塊,這些模塊可以滿足一切企業級應用開發的需求,在開發過程中可以根據需要有選擇性地使用所需要的模塊
  2. Spring Core(核心容器):spring core提供了IOC,DI,Bean配置裝載創建的核心實現。核心概念: Beans、BeanFactory、BeanDefinitions、ApplicationContext
    1. spring-core :IOC和DI的基本實現

    2. spring-beans:BeanFactory和Bean的裝配管理(BeanFactory)

    3. spring-context:Spring context上下文,即IOC容器(AppliactionContext)

    4. spring-expression:spring表達式語言

  3. Spring AOP(面向切面編程)
    1. spring-aop:面向切面編程的應用模塊,整合ASM,CGLib,JDK Proxy
    2. spring-aspects:集成AspectJ,AOP應用框架
    3. spring-instrument:動態Class Loading模塊
  4. Spring Data Access(數據訪問)
    1. spring-jdbc:spring對JDBC的封裝,用于簡化jdbc操作
    2. spring-orm:java對象與數據庫數據的映射框架
    3. spring-oxm:對象與xml文件的映射框架
    4. spring-jms: Spring對Java Message Service(java消息服務)的封裝,用于服務之間相互通信
    5. spring-tx:spring jdbc事務管理
  5. Spring Web(應用程序)
    1. spring-web:最基礎的web支持,建立于spring-context之上,通過servlet或listener來初始化IOC容器
    2. spring-webmvc:實現web mvc
    3. spring-websocket:與前端的全雙工通信協議
    4. spring-webflux:Spring 5.0提供的,用于取代傳統java servlet,非阻塞式Reactive Web框架,異步,非阻塞,事件驅動的服務
  6. Spring Message(消息傳遞)
    1. Spring-messaging:spring 4.0提供的,為Spring集成一些基礎的報文傳送服務
  7. Spring test(測試)
    1. spring-test:集成測試支持,主要是對junit的封裝

五、Spring6特點

(1)版本要求

  1. Spring6要求JDK最低版本是JDK17

(2)本課程軟件版本

  1. IDEA開發工具:2022.1.2
  2. JDK:java17
  3. Spring:6.0.2

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

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

相關文章

C語言預處理藝術:編譯前的魔法之旅

大家好,這里是小編的博客頻道 小編的博客:就愛學編程 很高興在CSDN這個大家庭與大家相識,希望能在這里與大家共同進步,共同收獲更好的自己!!! 本文目錄 引言正文一、預處理的作用與流程&#xf…

基于Springboot + vue實現的旅游網站

🥂(???)您的點贊👍?評論📝?收藏?是作者創作的最大動力🤞 💖📕🎉🔥 支持我:點贊👍收藏??留言📝歡迎留言討論 🔥🔥&…

docker-compose和docker倉庫

一、docker-compose 1.概述 docker-compose是一個自動編排工具,可以根據dockerfile自動化部署docker容器。 主要功能 配置定義 使用YAML文件(通常命名為docker - compose.yml)來描述應用程序的服務、網絡和卷等配置。 容器編排 可以同時…

MAC AndroidStudio模擬器無網絡

先確認PC端是正常訪問網絡的; 模擬器端修改Wifi設置:設置 - 網絡和互聯網 - WALN設置 按照上圖修改; IP設置:從DHCP修改為靜態,IP地址:10.0.2.16 ,網關:10.0.2.2 , DNS…

Wireshark 使用教程:網絡分析從入門到精通

一、引言 在網絡技術的廣闊領域中,網絡協議分析是一項至關重要的技能。Wireshark 作為一款開源且功能強大的網絡協議分析工具,被廣泛應用于網絡故障排查、網絡安全檢測以及網絡協議研究等諸多方面。本文將深入且詳細地介紹 Wireshark 的使用方法&#x…

Java 面試題 - ArrayList 和 LinkedList 的區別,哪個集合是線程安全的?

Java 面試題 - ArrayList 和 LinkedList 的區別,哪個集合是線程安全的? 在 Java 開發中,ArrayList和LinkedList是兩個常用的集合類,它們在數據結構和性能上有諸多不同,同時線程安全性也各有特點。深入理解這些差異&am…

nvim 打造成可用的IDE(2)

上一個 文章寫的太長了, 后來再寫東西 就一卡一卡的,所以新開一個。 主要是關于 bufferline的。 之前我的界面是這樣的。 這個圖標很不舒服有。 后來發現是在這里進行配置。 我也不知道,這個配置 我是從哪 抄過來的。 測試結果&#xff1…

升級 SpringBoot3 全項目講解 — 為什么 SpringBoot3 應該拋棄 Maven,搭配 Gradle 來使用?

學會這款 🔥全新設計的 Java 腳手架 ,從此面試不再怕! 隨著 Spring Boot 3 的發布,許多開發者開始考慮如何將現有項目升級到最新版本。Spring Boot 3 帶來了許多新特性,包括對 Java 17 的支持、更好的性能優化以及對 G…

Java學習筆記(二十三)

1 CacheEvict CacheEvict是Spring框架中用于清空緩存的注解。以下是對CacheEvict注解的詳細介紹: 1.1 作用 CacheEvict注解的主要作用是刪除緩存中的數據。在方法執行后或執行前(根據配置),它可以清空指定的緩存項或整個緩存區…

如何優化Elasticsearch大文檔查詢?

記錄一次業務復雜場景下DSL優化的過程 背景 B端商城業務有一個場景就是客戶可見的產品列表是需要N多閘口及各種其它邏輯組合過濾的,各種閘口數據及產品數據都是存儲在ES的(有的是獨立索引,有的是作為產品屬性存儲在產品文檔上)。 在實際使用的過程中&a…

openCvSharp 計算機視覺圖片找茬

一、安裝包 <PackageReference Include"OpenCvSharp4" Version"4.10.0.20241108" /> <PackageReference Include"OpenCvSharp4.runtime.win" Version"4.10.0.20241108" /> 二、準備兩張圖片 三、編寫代碼 using OpenCv…

實戰:FRP內網穿透部署-支持ssh、web訪問

目錄 1 準備工作2 公網服務器部署server端2.1 frps.ini配置 3 內網客戶端部署client端3.1 frpc.ini配置&#xff08;內網服務器01&#xff09;3.2 frpc.ini配置&#xff08;內網服務器02&#xff09; 4 服務啟動腳本4.1 公網服務器 server4.2 內網服務器 client 2 systemctl常見…

Uniapp中實現加載更多、下拉刷新、返回頂部功能

一、加載更多&#xff1a; 在到達底部時&#xff0c;將新請求過來的數據追加到原來的數組即可&#xff1a; import {onReachBottom } from "dcloudio/uni-app";const pets ref([]); // 顯示數據function network() {uni.request({url: "https://api.thecatap…

C# 多線程 Task TPL任務并行

先總結一下 之前發展過程的要點 1&#xff1a; 為了保證多線程正確順序執行 線程同步 2&#xff1a; 為了節省操作系統線程資源 線程池 異步 方式管理 正常來講 使用這倆個要點 進行使用 多線程可以滿足開發使用需求 但是 新的問題產生了 那就是 多個異步操作 需要編寫大量的代…

C++單例模式的設計

單例模式&#xff08;Singleton Pattern&#xff09;是一種設計模式&#xff0c;用于確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來訪問該實例。在C中&#xff0c;單例模式通常用于管理全局資源或共享狀態。 以下是C中實現單例模式的幾種常見方式&#xff1a; 懶…

HBASE學習(一)

1.HBASE基礎架構&#xff0c; 1.1 參考&#xff1a; HBase集群架構與讀寫優化&#xff1a;理解核心機制與性能提升-CSDN博客 1.2問題&#xff1a; 1.FLUSH對hbase的影響 2. HLog和memstore的區別 hlog中存儲的是操作記錄&#xff0c;比如寫、刪除。而memstor中存儲的是寫入…

Flutter:封裝ActionSheet 操作菜單

演示效果圖 action_sheet_util.dart import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:demo/common/index.dart;class ActionSheetUtil {/// 底部操作表/// [context] 上下文/// [title] 標題/// [items] 選項列表 …

【Rust練習】28.use and pub

練習題來自&#xff1a;https://practice-zh.course.rs/crate-module/use-pub.html 1 使用 use 可以將兩個同名類型引入到當前作用域中&#xff0c;但是別忘了 as 關鍵字. use std::fmt::Result; use std::io::Result;fn main() {}利用as可以將重名的內容取別名&#xff1a;…

Nginx 可觀測性最佳實踐

Nginx 介紹 Nginx 是一個開源、輕量級、高性能的 HTTP 和反向代理服務器&#xff0c;也可以用于 IMAP/POP3 代理服務器。Nginx 因其采用的異步非阻塞工作模型&#xff0c;使其具備高并發、低資源消耗的特性。高度模塊化設計也使得 Nginx 具備很好的擴展性&#xff0c;在處理靜…

《汽車維護與修理》是什么級別的期刊?是正規期刊嗎?能評職稱嗎?

?問題解答&#xff1a; 問&#xff1a;《汽車維護與修理》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知網收錄的正規學術期刊。 問&#xff1a;《汽車維護與修理》級別&#xff1f; 答&#xff1a;國家級。主管單位&#xff1a;中國汽車維修行業協會 …