企業級應用
現代企業級應用是以Web服務器為中心,通過網路把服務器和客戶端瀏覽器聯系在一起的應用,
-
Web支持
基于Internet網路(瀏覽器)
-
高并發支持
同時受到大量HTTP請求,系統需要快速回應
-
事務支持
支持事務完整性(對于多個系統還需要支持分布式事務)
-
安全支持
受保護的資源獲得安全保護(如防御黑客攻擊)
-
互動支持
多個系統之間進行互動(如程式與資料庫系統互動,與郵件服務器互動等)
-
集群支持
提供系統可用性和可伸縮性,企業級應用應該很容易隨業務的需求而擴展
-
分布式支持
查找和呼叫分布式服務
Spring
Spring 是分層的 JavaEE 應用一站式輕量級開源框架,以控制反轉(Inverse of Control,IoC)和面向切面編程(Aspect Oriented Programming,AOP)為內核,提供了表現層Spring MVC、持久層 Spring JDBC 以及業務管理等眾多的企業級應用技術,
Spring的特點
-
方便解耦,簡化開發(核心)
通過Spring提供的IoC容器,可以將物件之間的依賴關系交由Spring進行控制,避免硬編碼所造成的的過度程式耦合
-
AOP編程的支持(核心)
通過Spring提供的AOP功能,用戶可以方便地進行面向切面編程,許多不容易傳統面向物件編程(OOP)實作的功能都可以通過AOP輕松應對
-
宣告式事務的支持(核心)
通過Spring的宣告式事務靈活地進行事務管理,提高開發效率和質量
-
方便程式測驗
可以用非容器依賴的編程方式進行幾戶所有的測驗作業
-
方便集成各種優秀框架
Spring不排斥各種優秀框架,并提供對各種優秀框架(如Struts、MyBatis、Hibernate等)
-
降低JavaEE API的使用難度
Spring為很多難用的JavaEE API(如JDBC、JavaMail、遠程呼叫等)提供了一個簡單封裝
-
Spring原始碼是經典的學習范例
Spring的原始碼設計合理、結構清晰,處處體現出對Java設計模式的靈活運用以及Java技術的深度挖掘
Spring 體系結構
Spring 框架由 1800 多個類組成,整個框架按其所屬功能可以劃分為 5 個主要模塊

Spring 大家族
Spring 開源組織以 Spring 為中心逐漸推出更多應對企業級開發各種場景和需求的框架,慢慢形成了一個龐大的大家族,如下:

IoC核心概念
IoC(控制反轉)就是應用本身不負責依賴物件的創建及維護,依賴物件的創建以及維護是由外部容器負責,這樣控制權就由應用程式轉移到了外部容器,控制權的轉移就是所謂的反轉,控制權轉移帶來的好處就是降低了業務物件之間的依賴程式(低耦合、高內聚),
DI核心概念
DI(Dependency Injection,依賴注入)可以向某個物件動態的注入它所依賴的其他物件,
依賴注入的方式
- 構造器注入
- 方法注入
- 介面注入
Spring IoC 容器支持構造器注入和方法注入

從上圖可以看到,通過使用 Spring IoC 容器可以達到三層架構降低耦合度的效果,讓三層之間不存在依賴之間,它們都依賴于 IoC 容器,
IoC容器
Spring IoC 容器是指實作IoC(控制反轉)和DI(依賴注入)概念的一個Spring組件,開發者使用IoC容器可以獲得IoC/DI帶來的降低耦合度和簡化開發特性
Bean
Spring中使用Bean來表示應用組件,一個Bean組件可以是任何形式的簡單Java類實體,Spring中使用IoC容器來管理Bean的生命周期(Bean的創建和銷毀)

BeanFactory(Bean工廠)
- BeanFactory是Spring框架最核心的介面,它提供了高級IoC的配置機制;BeanFactory使管理不同型別的Java物件成為可能,
- BeanFactory是Spring框架的基礎設施,屬于地測封裝組件,專供Spring框架內部使用
ApplicationContext(應用背景關系)
- ApplicationContex 是建立在 BeanFactory 基礎之上,提供了更多面向應用的功能,一般稱 BeanFactory 為IoC 容器,而稱 AppliecationContext 為應用背景關系,
- ApplicationContext 面向 Spring 框架的開發者,屬于上層封裝組件,專供開發者使用
- 通過 ApplicationContext 應用背景關系案例呼叫其 getBean() 方法從 IoC 容器中即可獲取 Bean 物件實體,
啟動IoC容器
Spring有三種啟動IoC容器的方式
-
ClassPathXmlApplication(相對路徑)
從類路徑下的XML組態檔中加載背景關系定義,把應用背景關系定義檔案當做類資源
ApplicationContext ctx = new ClassPathXmlApplicationContext("包路徑/beans.xml")
- FileSystemXmlApplicationContext(絕對路徑)
ApplicationContext ctx = new FileSystemXmlApplicationContext("檔案路徑/beans.xml")
-
XmlWebApplicationContext(Web配置路徑)
讀取Web應用下的XML組態檔并加載背景關系定義
裝配 Bean
裝配 Bean 是指在 Spring IoC 容器中創建 Bean 組件和建立 Bean 組件之間的依賴關系的程序,即實作 IoC(控制反轉)和 DI(依賴注入),
Spring 支持三種裝配 Bean 的方式:
- 基于 XML 配置裝配 Bean
- 基于注解裝配 Bean
- 基于 Java 類裝配 Bean
使用注解裝配 Bean
- 開啟注解
<!--Spring IoC 容器需要在 Spring 配置中開啟注解(默認禁用注解)-->
<context:annotation-config />
<!--Spring IoC 容器需要自動檢測 Bean(掃描 Java 類中 Bean 組件) -->
<context:component-scan packages=“包路徑”/>
-
定義Bean組件注解
@Component
標示 Java類 為 Spring Bean 組件(通用注解)
@Controller
標示三層架構中表現層的 Java 類為 Spring Bean 組件
@Service
標識三層架構中業務邏輯層的 Java 類為 Spring Bean 組件
@Repository
標識三層架構中資料訪問層或持久層的 Java 類為 Spring Bean 組件
-
Bean 組件依賴注入注解(DI)
@Autowired
- 可用于標注 setter 方法
- 可用于標注構造器
- 可用與直接標注屬性(常用)
@Resource
使用與 @Autowired 注解相同
@Qualifier
明確指定需要自動裝配的Bean組件
AOP 概念
AOP (Aspect Oriented Programming 的縮寫,翻譯為面向方面或面向切面編程),通過預編譯方式和運行期動態代理實作程式功能的統一維護的一種技術)
- AOP 是 OOP的延續和有益補充,也是 Spring 框架中的一個重要內容,是函式式編程的一種衍生泛型
- 利用 AOP 可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各個部分之間的耦合度降低,提高程式的可用性,同時提高了開發的效率
- 在 Spring 中提供了 AOP 的豐富支持,允許通過分離應用的業務邏輯與系統級服務和事務管理進行內聚性的開發
AOP 與 OOP 區別
- OOP(面向物件編程)針對業務處理程序中屬性和行為進行抽象和封裝,以復用代碼、降低系統復雜度
- AOP(面向切面編程)針對業務處理程序中的切面進行橫向提取,以隔離業務,降低業務之間的耦合度
AOP 使用場景
- 日志記錄
- 性能統計
- 安全控制
- 事務處理
- 例外處理
- 其他功能
AOP 術語
-
連接點(Joinpoint)
AOP 插入代碼的特定位置(方法呼叫前、方法呼叫后、方法呼叫前后、拋出例外)
-
切點(Pointcut)
AOP 定位或查找連接點的方式(一個切點可以匹配多個連接點)
- 增強(Advice)
AOP 插入到連接點的一段程式代碼(前置增強、后置增強、環繞增強和拋出例外增加)
- 引介(Introduction)
特殊的增強(可以為類添加一些屬性和方法)
- 織入(Weaving)
插入代碼的程序(AOP 有三種織入方式:編譯器織入、類裝載器織入、動態代理織入)
- 切面(Aspect)
由切點和增強或引介組成(Spring AOP 是負責實施切面的框架)
Spring AOP 切點運算式
切點運算式 = execution (回傳值型別+包名+類名+方法名+引數個數)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/183078.html
標籤:其他
