文章目錄
- 基本概念
- IoC
- Ioc容器
- IoC理解
- IoC的步驟
- Spring中使用ioc的步驟
- Aop
- Aop的理解
- Aop的步驟
- 控制反轉
- 誰控制誰? 控制什么?為何叫反轉(對應于正向)?哪些方面反轉了?為何需要反轉?
- 依賴
- 什么是依賴(按名稱理解、按動詞理解)? 誰依賴于誰? 為什么需要依賴? 依賴什么東西?
- 注入
- 誰注入于誰? 注入什么東西? 為何要注入?
- 依賴注入和控制反轉是同一概念嗎
- IoC/DI是什么
- IoC/DI是什么?能做什么?怎么做?用在什么地方?
- 什么是外部資源
- 數據訪問
- Wed開發
基本概念
- 使用spring后,被spring管理的類,不需要再new。
- 要想類被spring管理,則需要通過bean的方式,把類引入到spirng的配置文件中。
IoC
Ioc容器
簡單的理解就是: 實現IoC思想,并提供對象創建,對象裝配以及對象生命周期管理的軟件就是Ioc容器
IoC理解
- 應用程序無需主動new對象,而是描述對象如何被創建
- 應用程序不需要主動裝配對象之間的依賴關系,而是描述需要那個服務,IoC容器會幫你裝配,被動接受裝配
- 主動變被動,是一種讓服務消費者不一直接依賴于服務提供者的組件設計方式,是一種減少類與類之間依賴的設計原則
IoC的步驟
Spring的主要通過bean標簽來實現IOC。
<!-- id屬性給這個bean指定一個唯一的名,供spring的其他組件來引用 class屬性指定bean的全路徑
-->
<bean id="hello" class="com.hello.Hello"><!--property通過set方法給對應的屬性設置值value屬性可以直接設置值ref屬性引用其他的組件--><property name="who" value="t6041"></property><property name="ink" ref="inkColor"></property>
</bean>
Spring中使用ioc的步驟
- 創建類
- 通過bean標簽把bean放到spring中
- 初始化spring配置文件拿到spring的上下文,通過spring的上下文獲取對應的bean。
Aop
Aop的理解
將復雜的要求分解出不同方面,將散布在系統中的"公共功能" “集中解決”
采用代理機制組裝起來運行,在 “不改變源程序” 的基礎上對代碼段進行增強處理,增加新的功能
Aop的步驟
- 創建一個增強。并納入spring的容器中。使普通類變成增強。
- 使用類似aop:before標簽把普通變成增強
- 實現BeforeAdvice接口也可以把普通類變成增強
<bean id="loggerAdvice" class="com.advice.LoggerAdvice"></bean>
- 創建切入點。
<aop:pointcut expression="execution(public void print())" id="pointcut"/>
- 定義切面。包涵增強的方法和切入點。
<aop:aspect ref="loggerAdvice"><aop:before method="before" pointcut-ref="pointcut"/>
</aop:aspect>
控制反轉
誰控制誰? 控制什么?為何叫反轉(對應于正向)?哪些方面反轉了?為何需要反轉?
- 誰控制誰? -->loC/DI容器控制應用程序
- 控制什么? -->IoC/DI容器控制對象本身的創建、實例化; IoC/DI容器控制對象之間的依賴關系
- 為何叫反轉(對應于正向)? -->因為現在應用程序不能主動去獲取外部資源了,而是被動等待IoC/DI容器給它注入它所需要的資源,所以稱為反轉
- 那些方面反轉了? -->1.創建對象 2.程序獲取資源的方式反了
- 為何需要反轉? -->1引入IoC/DI容器過后體系更為松散,而且管理更有序; 2.類之間真正實現了松散耦合
依賴
什么是依賴(按名稱理解、按動詞理解)? 誰依賴于誰? 為什么需要依賴? 依賴什么東西?
- 什么是依賴(按名稱理解、按動詞理解)? -->依賴(按名理解):依賴關系; 依賴(按動詞理解)依賴的動作
- 誰依賴誰? -->應用程序依賴于IoC/DI容器
- 為什么需要依賴? -->因為發生了反轉,應用程序依賴的資源都是IoC/DI容器里面
- 依賴什么東西? -->應用程序依賴于IoC/DI容器,依賴IoC/DI容器為它注入所需的資源
注入
誰注入于誰? 注入什么東西? 為何要注入?
- 誰注入于誰? -->IoC/DI容器注入于應用程序
- 注入什么東西? -->注入應用程序需要的外部資源,比如關系依賴
- 為何要注入? -->因為程序要正常運行需要這些外部資源
依賴注入和控制反轉是同一概念嗎
不是同一概念,其實他們兩個描述的是同一件事件,但是是從不同角度來說: 控制反轉從IoC/DI容器的角度; 依賴注入是從應用程序的角度
- 控制反轉的描述: IoC/DI容器反過來控制應用程序,控制應用程序所需要的外部資源(比如: 外部資源)
- 依賴注入描述: 應用程序依賴IoC/DI容器,依賴注入他所需的外部資源
IoC/DI是什么
IoC/DI是什么?能做什么?怎么做?用在什么地方?
- IoC/DI是什么
- IoC: 就是使用IoC/DI容器反過來控制應用程序所需要的外部資源,這樣的一種程序開發思想
- DI: 就是應用程序依賴IoC/DI容器來注入所需的外部資源,這樣一種程序開發的思想
- 能做什么 -->松散耦合對象
- 怎么做 -->使用Spring框架,里面有實現好了的IoC/DI容器
- 用在什么地方 -->凡是程序里面需要外部資源的情況,都可以考慮使用IoC/DI容器
什么是外部資源
對于一個類來講,所謂的外部資源,就是指在自己類不能得到或實現的東西,比如說: 在一個類里面要讀取配置文件,那么這個配置文件就相當于這個類的外部資源,又比如: A類里面調用B類,那么對于A類來講B類就是外部資源
數據訪問
Spring提供了對各種數據訪問技術的支持,包括JDBC、ORM(對象關系映射)框架(如Hibernate、MyBatis)、事務管理等。它提供了一種統一的訪問數據的方式,并且可以方便地切換或組合不同的數據訪問技術。
- JDBC:Spring提供了JdbcTemplate類來簡化JDBC操作,包括連接管理、異常處理和事務管理等
- ORM(對象關系映射):Spring提供了對ORM框架的集成支持,包括Hibernate、JPA、MyBatis等。通過Spring的ORM支持,可以更方便地進行數據庫操作,不需要編寫繁瑣的數據庫訪問代碼
- 事務管理:Spring提供了對事務的封裝和管理,包括編程式事務和聲明式事務兩種方式。通過使用Spring的事務管理支持,可以簡化事務的使用,提高代碼的可維護性和可讀性。
- 數據庫連接池:Spring提供了對常見數據庫連接池的集成支持,例如C3P0、HikariCP等。通過使用Spring的數據庫連接池,可以更高效地管理連接資源,提高應用的性能和可擴展性。
- NoSQL數據庫:Spring提供了對一些NoSQL數據庫的集成支持,例如MongoDB、Redis等。通過Spring的支持,可以更方便地操作這些NoSQL數據庫,實現數據的持久化和緩存。
Wed開發
Web是Spring框架中用于開發Web應用程序的模塊。它提供了一組功能強大的類和工具,用于簡化Web應用程序的開發和管理。
- MVC(模型-視圖-控制器)架構:Spring Web提供了基于MVC架構的Web框架,通過定義和組織控制器、視圖和模型,使得開發人員可以更容易地實現業務邏輯和界面交互的分離。
- 請求處理:Spring Web提供了多種方式來處理HTTP請求,包括基于注解的請求映射、路徑變量、請求參數的綁定、請求驗證和錯誤處理等。開發人員可以根據具體需求選擇最合適的請求處理方式。
- 視圖渲染:Spring Web支持多種視圖技術,包括JSP、Thymeleaf、Freemarker等,開發人員可以根據具體需求選擇合適的視圖渲染方式。
- 表單處理:Spring Web提供了表單處理的支持,包括表單數據的綁定、驗證、錯誤處理和表單重復提交的防御等。