系統學習SpringFramework:Spring 概述

本篇內容包括:Spring/SpringFrame 概述、Spring IOC 和 AOP 概述、Spring 全家桶內容概述(包括:Spring Boot、Spring Cloud、Spring Cloud data flow …)等內容!

一、Spring/SpringFrame 概述

Spring 是一個生態體系(也可以說是技術體系),是集大成者,它包含了 Spring Framework、Spring Boot、Spring Cloud 等(還包括Spring Cloud data flow、spring data、spring integration、spring batch、spring security、spring hateoas),我們常提到的 IOC、AOP 等概念實際上是來源于 Spring Framework。

Spring Framewor 框架是 Java 平臺的一個開源的全棧(full-stack)應用程序框架和控制反轉容器實現,一般也被直接稱為 Spring。該框架的一些核心功能理論上可用于任何 Java 應用,但 Spring Framewor 還為基于 Java 企業版平臺構建的 Web 應用提供了大量的拓展支持。Spring Framewor 沒有直接實現任何的編程模型,但它已經在 Java 社區中廣為流行,基本上完全代替了企業級 JavaBeans(EJB)模型。

Spring Framewor 框架以 Apache License 2.0 開源許可協議的形式發布,該框架最初由 Rod Johnson 以及 Juergen Hoeller 等人開發。

Spring 官方對 Spring Framework 簡短描述:為依賴注入、事務管理、WEB應用、數據訪問等提供了核心的支持。Spring Framework 專注于企業級應用程序的“管道”,以便開發團隊可以專注于應用程序的業務邏輯。

Ps:千萬不要把 Spring 和 Spring Framework 搞混淆了,很多文章都錯誤的定義了 spring:spring 是一個一站式的輕量級的 Java開發框架,核心是控制反轉(IoC)和面向切面(AOP),針對于開發的 Web層(springMVC)、業務層(IoC)、持久層等都提供了多種配置解決方案。這是 Spring Framework 的定義,至于 Spring,是整個生態。


二、Spring IOC 和 AOP 概述

1、IOC

IoC(Inversion of control )即“控制反轉”,它是一種設計思想而非一個技術實現。描述了 Java 開發領域對象的創建以及管理的問題。通過 Spring 來管理對象的創建、配置和生命周期,這樣相當于把控制權交給了 Spring,不需要人工來管理對象之間復雜的依賴關系,這樣做的好處就是解耦。

  • 傳統的開發方式 :往往是在類 A 中手動通過 new 關鍵字來 new 一個 B 的對象出來;
  • 使用 IoC 思想的開發方式 :不通過 new 關鍵字來創建對象,而是通過 IoC 容器(Spring 框架) 來幫助我們實例化對象。我們需要哪個對象,直接從 IoC 容器里面過去即可

從以上兩種開發方式的對比來看:我們 “喪失了一個權力” (創建、管理對象的權力),從而也得到了一個好處(不用再考慮對象的創建、管理等一系列的事情)

  • 控制了什么:控制了對象(創建、實例化、管理的權力)
  • 反轉了什么 :反轉了控制權,控制權交給外部環境(Spring 框架、IoC 容器)

2、AOP

AOP(Aspect oriented programming),即面向切面編程,它是一個編程范式,是 OOP(面向對象編程)的一種延續,目的就是提高代碼的模塊性。

Spring AOP 基于動態代理的方式實現,如果是實現了接口的話就會使用 JDK 動態代理,反之則使用 CGLIB 代理,Spring中 AOP 的應用主要體現在 事務、日志、異常處理等方面,通過在代碼的前后做一些增強處理,可以實現對業務邏輯的隔離,提高代碼的模塊化能力,同時也是解耦。Spring主要提供了 Aspect 切面、JoinPoint 連接點、PointCut 切入點、Advice 增強等實現方式。


三、Spring 全家桶內容概述

1、Spring Boot

但是,無論 Spring Framework 接口如何簡化,設計如何優美,始終無法擺脫被動的境況:由于它自身并非容器,所以基本上不得不隨 JavaEE 容器啟動而裝載,例如 Tomcat、Jetty、JBoss 等。然而 Spring Boot 的出現,改變了 Spring Framework 甚至整個 Spring 技術體系的現狀(摘自小馬哥的《SpringBoot編程思想》)。

Spring Boot 這家伙簡直就是對 Java 企業級應用開發進行了一場浩浩蕩蕩的革命。如果稍微有幾年工作經驗的老油條,應該都記得以前的 Java Web 開發模式:Tomcat + WAR包。WEB項目基于spring framework,項目目錄一定要是標準的 WEB-INF + classes + lib,而且大量的 xml 配置。如果說,以前搭建一個 SSH 架構的Web項目需要 1 個小時,那么現在應該 10 分鐘就可以了。

Spring Boot 能夠讓你非常容易的創建一個單機版本、生產級別的基于 spring framework 的應用。然后,"just run"即可。Spring Boot 默認集成了很多第三方包,以便你能以最小的代價開始一個項目。

官方對 Spring Boot 的定義:

Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring. Spring Boot takes an opinionated view of building production-ready applications.

即 Spring Boot 為快速啟動且最小化配置的 Spring 應用而設計,并且它具有用于構建生產級別應用的一套固化的視圖。這里的固化的視圖,筆者認為可以理解成 Spring Boot 的約定,因為Spring Boot 的設計是約定大于實現的。

2、Spring Cloud

Spring Cloud 事實上是一整套基于 Spring Boot 的微服務解決方案。它為開發者提供了很多工具,用于快速構建分布式系統的一些通用模式,例如:配置管理、注冊中心、服務發現、限流、網關、鏈路追蹤等。

3、Spring Cloud data flow

Data flow 是一個用于開發和執行大范圍數據處理其模式包括ETL,批量運算和持續運算的統一編程模型和托管服務。對于在現代運行環境中可組合的微服務程序來說,spring cloud data flow是一個原生云可編配的服務。

使用 spring cloud data flow,開發者可以為像數據抽取,實時分析,和數據導入/導出這種常見用例創建和編配數據通道 (data pipelines)。

Spring cloud data flow 是基于原生云對 spring XD的重新設計,該項目目標是簡化大數據應用的開發。

Spring XD 的流處理和批處理模塊的重構分別是基于 spring boot的stream 和 task/batch 的微服務程序。這些程序現在都是自動部署單元而且他們原生的支持像 Cloud Foundry、Apache YARN、Apache Mesos和Kubernetes 等現代運行環境。

Spring cloud data flow 為基于微服務的分布式流處理和批處理數據通道提供了一系列模型和最佳實踐。

4、Spring Data

Spring Data 是Spring 的一個子項目, 旨在統一和簡化對各類型持久化存儲, 而不拘泥于是關系型數據庫還是NoSQL 數據存儲。無論是哪種持久化存儲, 數據訪問對象(或稱作為DAO,即Data Access Objects)通常都會提供對單一域對象的CRUD (創建、讀取、更新、刪除)操作、查詢方法、排序和分頁方法等。Spring Data 則提供了基于這些層面的統一接口(CrudRepository,PagingAndSortingRepository)以及對持久化存儲的實現。

5、Spring Integration

Spring Integration 在基于 Spring 的應用程序中實現輕量級消息傳遞,并支持通過聲明適配器與外部系統集成。 Spring Integration的主要目標是提供一個簡單的模型來構建企業集成解決方案,同時保持關注點的分離,這對于生成可維護,可測試的代碼至關重要。Spring Framework鼓勵開發人員使用接口進行編碼,并使用依賴注入(DI)為普通舊Java對象(POJO)提供執行其任務所需的依賴項。 Spring Integration 將這一概念更進一步,其中POJO使用消息傳遞范例連接在一起,并且各個組件可能不了解應用程序中的其他組件。這種應用程序是通過組裝細粒度可重用組件來構建的,以形成更高級別的功能。通過精心設計,這些流程可以模塊化,并在更高的層次上重復使用。

6、Spring Batch

Spring Batch 是一個輕量級的、完善的批處理框架,旨在幫助企業建立健壯、高效的批處理應用。Spring Batch 是 Spring的一個子項目,使用Java語言并基于Spring框架為基礎開發,使得已經使用 Spring 框架的開發者或者企業更容易訪問和利用企業服務。

Spring Batch 提供了大量可重用的組件,包括了日志、追蹤、事務、任務作業統計、任務重啟、跳過、重復、資源管理。對于大數據量和高性能的批處理任務,Spring Batch 同樣提供了高級功能和特性來支持,比如分區功能、遠程功能。總之,通過 Spring Batch 能夠支持簡單的、復雜的和大數據量的批處理作業。

7、Spring Security

Spring Security 是一個能夠為基于Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在 Spring 應用上下文中配置的 Bean,充分利用了 Spring IoC,DI(控制反轉 Inversion of Control ,DI:Dependency Injection 依賴注入)和 AOP(面向切面編程)功能,為應用系統提供聲明式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重復代碼的工作。

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

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

相關文章

存儲過程與函數oracle

存儲在數據庫中供所有用戶程序調用的子程序叫做存儲過程,存儲函數。 存儲過程是在大型數據庫系統中,用PL/SQL語言編寫的能完成一定處理功能的存儲在數據庫字典中的程序,它是一個命名的 PL/SQL 塊,經編譯后存儲在數據庫中&#xff…

系統學習SpringFramework:Spring IOC

本篇內容包括:IOC 和 DI 的概念、Spring 容器,即 BenaFactory 與 AplicationConext 等 IOC 相關內容。 一、IOC 和 DI 的概念 1、IOC IoC(Inversion of control )即“控制反轉”,它是一種設計思想而非一個技術實現。…

徹底卸載oracle

linux刪除Oracle安裝目錄下的所有文件和文件夾即可。windows 1.關閉oracle所有的服務。可以在windows的服務管理器中關閉 2.打開注冊表:regedit 打開路徑: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 刪除該路徑下的所有以oracle開始的服務…

系統學習SpringFramework:Spring AOP

本篇內容包括:Spring AOP 概述(AOP 簡介、AOP 為什么叫面向切面編程、AOP 主要用來解決的問題 和 AOP 的相關術語)、Spring AOP Demo(xml 方式、注解方式)以及相關知識點(JDK 動態代理和 CGLIB 代理、Sprin…

rowid

ROWID的格式rowidOOOOOOFFFBBBBBBRRR說明數據對象號相對文件號數據塊號行號 上述表格是Oracle 9i及以上版本數據庫中的rowid格式: 6位對象號3位相對文件號6位數據塊號3位行號,是一個18位的64進制值。這個18位的64進制值在數據庫內卻是以10個bytes合計80個bit的二進制…

git和gitlab安裝

1.下載git最新包 https://mirrors.edge.kernel.org/pub/software/scm/git/ 將最新包上傳至服務器/home目錄 tar -Jxvf 解壓 進入git目錄 ./configure --prefix/usr/local/git make make install 錯誤解決:Cant locate ExtUtils/MakeMaker.pm in INC yum i…

系統學習SpringFramework:循環依賴與三級緩存

本篇內容包括:Spring 中的循環依賴問題(包括 Spring 中的循環依賴問題和Spring 中的循環依賴的 5 種場景的介紹)、Spring 三級緩存介紹、4 個 Spring 無法自動解決的循環以來場景以及其對應的手動解決方式。 一、Spring 中的循環依賴問題 1、…

oracle安裝需要的包列表

redhat7.5安裝圖形界面: [rootwwyt ~]# rpm -ivh --nodeps --force xorg-x11-font* [rootwwyt ~]# mount -o loop -t iso9660 rhel-server-7.5-x86_64-dvd.iso /media/iso/ [rootwwyt ~]# cat /etc/yum.repos.d/my.repo [base] nameredhat7.5 baseurlfile:///m…

深入理解Java虛擬機:Java類的加載機制

本篇內容包括:Java 類的加載機制(Jvm 結構組成、Java 類的加載)、類的生命周期(加載-驗證-準備-解析-初始化-使用-卸載)、類加載器 以及 雙親委派模型。 一、Java 類的加載機制 1、 Jvm 結構組成 Jvm 整體組成可分為…

新版谷歌瀏覽器開啟Flash支持

瀏覽器地址欄中輸入chrome://version查看Chrome瀏覽器、Flash插件的版本信息。 Chrome 69.0-70.0版本Chrome 71.0-74.0及以后版本谷歌瀏覽器地址欄中輸入【chrome://flags/#enable-ephemeral-flash-permission】,將【Enable Ephemeral Flash Permissions】從【Defau…

深入理解Java虛擬機:Java垃圾回收機制

本篇內容包括:JAVA 垃圾回收機制概述、有哪些內存需要回收、如何回收(標記-清除、標記-整理(標記-清除-壓縮)、復制(標記-復制-清除)、分代收集等算法) 以及 何時進行垃圾回收等內容&#xff01…

深入理解Java虛擬機:Java垃圾回收器

本篇內容包括:7 種 Jvm 垃圾回收器的介紹、對比 以及 對應的 Jvm 參數設置,這 7 種包括了:Serial、ParNew 以及 Parallel Scavenge 三種新生代回收器 和 :Serial Old、Parallel Old 以及 CMS 三種老年代回收器,此外還有…

oracle跨越千年處理

如果指定的兩位年份0-4950-99 如果當前 的兩位年 份是 0-49返回的日期是當前世紀返回的日期是上個世紀50-99返回的日期是下個世紀返回的日期是當前世紀 current yearSpecified DateRR FormatYY Format199527-OCT-9519951995199527-OCT-171951917200127-OCT-1720012017200127-OC…

網絡協議:什么是網絡分層的七四五

本篇內容包括:網絡分層七層、五層、四層網絡協議概念的介紹,IOS 體系結構的介紹與構成、TCP/IP體系結構的簡介及與IOS體系的關系 以及五層體系結構的介紹。 一、七層、五層、四層網絡協議概念 1、關于網絡協議 網絡協議,即是指計算機網絡中…

查看表空間相關命令

默認表空間數據文件大小根據DATA BLOCKS的大小有關,默認最大為32GB表空間達到32G,只能增加數據文件alter tablespace 表空間名 add datafile 數據文件路徑‘ size 500m autoextend on next 100m maxsize 10000M;未達到32G,修改數據文件的擴展…

網絡協議:一文搞懂Socket套接字

本篇內容包括:Socket 套接字的簡介、Socket 套接字的分類、Java 中的 Socket 即 java.net.ServerSocket、java.net.Socket 的使用,以及Java 使用套接字 Scoket 編程的Demo。 一、Socket 簡介 TCP(傳輸控制協議)是一種面向連接的、…

RESETLOGS

使用resetlogs選項,會把當前的日志序號(log sequence number)重設為1,并拋棄所有日志信息。在以下條件時需要使用resetlogs選項: 在不完全恢復(介質恢復); 使用備份控制文件。 使…

網絡協議:透徹解析HTTP協議

本篇內容包括:HTTP 協議定義及其特點概述、關于 URL 定義及分類概述、Request 請求、Response 響應 以及 瀏覽器訪問一個網站的全過程 等內容… 一、HTTP 協議概述 HTTP(HyperText Transfer Protocol) 即 超文本傳輸協議,它是一種…

oracle參數文件和口令文件

外部 審核 口令:記錄超級用戶的用戶名和口令,做sys用戶的安全審核 oracle9以后全部使用sys登錄,但需要使用as sysdba ,之前版本需要使用internal o7字典打開 只要用戶和密碼存在于口令文件,就可以以sysdba登錄&#…