javascript
Spring/SpingMVC常见问题总结
Spring/SpingMVC常見問題總結
目錄
1. 為什么要使用 spring?
- spring 提供 ioc 技術,容器會幫你管理依賴的對象,從而不需要自己創建和管理依賴對象了,更輕松的實現了程序的解耦。
- spring 提供了事務支持,使得事務操作變的更加方便。
- spring 提供了面向切片編程,這樣可以更方便的處理某一類的問題。
- 更方便的框架集成,spring 可以很方便的集成其他框架,比如 Mybatis、hibernate等。
2. 解釋一下什么是 aop?
AOP(Aspect Oriented Programming),即面向切面編程,可以說是OOP(Object Oriented Programming,面向對象編程)的補充和完善。OOP引入封裝、繼承、多態等概念來建立一種對象層次結構,用于模擬公共行為的一個集合。不過OOP允許開發者定義縱向的關系,但并不適合定義橫向的關系,例如日志功能。日志代碼往往橫向地散布在所有對象層次中,而與它對應的對象的核心功能毫無關系,對于其他類型的代碼,如安全性、異常處理和透明的持續性也都是如此,這種散布在各處的無關的代碼被稱為橫切(cross cutting),在OOP設計中,它導致了大量代碼的重復,而不利于各個模塊的重用。
AOP技術恰恰相反,它利用一種稱為"橫切"的技術,剖解開封裝的對象內部,并將那些影響了多個類的公共行為封裝到一個可重用模塊,并將其命名為"Aspect",即切面。所謂"切面",簡單說就是那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便于減少系統的重復代碼,降低模塊之間的耦合度,并有利于未來的可操作性和可維護性。
使用"橫切"技術,AOP把軟件系統分為兩個部分:核心關注點和橫切關注點。業務處理的主要流程是核心關注點,與之關系不大的部分是橫切關注點。橫切關注點的一個特點是,他們經常發生在核心關注點的多處,而各處基本相似,比如權限認證、日志、事物。AOP的作用在于分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。
3. 解釋一下什么是 ioc?
ioc:Inversionof Control(控制反轉)是 spring 的核心,對于 spring 框架來說,就是由 spring 來負責控制對象的生命周期和對象間的關系。
簡單來說,控制指的是當前對象對內部成員的控制權;控制反轉指的是,這種控制權不由當前對象管理了,由其他(類,第三方容器)管理。
IoC叫控制反轉,是Inversion of Control的縮寫,DI(Dependency Injection)叫依賴注入,是對IoC更簡單的詮釋。控制反轉是把傳統上由程序代碼直接操控的對象的調用權交給容器,通過容器來實現對象組件的裝配和管理。所謂的"控制反轉"就是對組件對象控制權的轉移,從程序代碼本身轉移到了外部容器,由容器來創建對象并管理對象之間的依賴關系。IoC體現了好萊塢原則 - “Don’t call me, we will call you”。依賴注入的基本原則是應用組件不應該負責查找資源或者其他依賴的協作對象。配置對象的工作應該由容器負責,查找資源的邏輯應該從應用組件的代碼中抽取出來,交給容器來完成。DI是對IoC更準確的描述,即組件之間的依賴關系由容器在運行期決定,形象的來說,即由容器動態的將某種依賴關系注入到組件之中。
一個類A需要用到接口B中的方法,那么就需要為類A和接口B建立關聯或依賴關系,最原始的方法是在類A中創建一個接口B的實現類C的實例,但這種方法需要開發人員自行維護二者的依賴關系,也就是說當依賴關系發生變動的時候需要修改代碼并重新構建整個系統。如果通過一個容器來管理這些對象以及對象的依賴關系,則只需要在類A中定義好用于關聯接口B的方法(構造器或setter方法),將類A和接口B的實現類C放入容器中,通過對容器的配置來實現二者的關聯。
依賴注入可以通過setter方法注入(設值注入)、構造器注入和接口注入三種方式來實現,Spring支持setter注入和構造器注入,通常使用構造器注入來注入必須的依賴關系,對于可選的依賴關系,則setter注入是更好的選擇,setter注入需要類提供無參構造器或者無參的靜態工廠方法來創建對象。
4. spring 有哪些主要模塊?
- spring core:框架最基礎部分,提供 ioc 和依賴注入特性。
- spring context:構建于 core 封裝包基礎上的 context 封裝包,提供了一種框架式的對象訪問方法。
- spring dao:Data Access Object 提供了 JDBC 的抽象層。
- spring aop:提供了面向切面的編程實現,讓你可以自定義攔截器,切點等。
- spring Web:提供了針對 Web 開發集成特性,例如文件上傳,利用 servlet listeners 進行 ioc 容器初始化和針對 Web 的 ApplicationContext。
- spring Web mvc:spring 中的 mvc 封裝包提供了 Web 應用的 Model-View-Controller(MVC)的實現。
5. spring 常用的注入方式有哪些?
- setter 屬性注入
- 構造方法注入
- 注解方式注入
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
1. 為什么要使用 spring?
總結
以上是生活随笔為你收集整理的Spring/SpingMVC常见问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法之堆排序
- 下一篇: Andorid中使用Gson和Fast-