《Spring實戰》讀書筆記——Spring簡介
歡迎大家關注我的微信公眾號,共同交流Java相關技術!
使用Spring的目的
Spring是為了解決企業級應用開發的複雜性而建立的,使用Spring可以讓簡單的JavaBean實現之前只有EJB才能完成的事情。
Spring如何降低Java開發的複雜性
- 最小侵入程式設計
- 通過面向介面和依賴注入實現鬆耦合
- 基於程式設計慣例和切面進行宣告式程式設計
- 通過模板減少樣板式程式碼
Spring容器
在Spring應用中,不再由物件自行建立或管理它們之間的依賴關係;Spring容器負責建立物件、裝配物件、配置它們並管理它們的整個生命週期。
容器是Spring框架的核心,是依賴注入和切面的基礎,其自帶了多個容器實現,這多個實現可以歸類為兩種不同的型別:
- Bean工廠,提供基本的依賴注入支援
- ApplicationContext,基於Bean工廠構建,提供應用框架級別的服務
ApplicationContext在實際的應用中更廣泛、更受歡迎。
應用上下文
Spring自帶了多種型別的應用上下文,其中最常用的幾種為:
- AnnotationConfigApplicationContext:從一個或多個基於Java的配置類中載入Spring上下文
- AnnotationConfigWebApplicationContext:從一個或多個基於Java的配置類中載入Spring Web應用上下文
- ClassPathXmlApplicationContext:從類路徑下的一個或多個xml配置檔案中載入Spring上下文
- FileSystemXmlApplicationContext:從檔案系統下的一個或多個xml配置檔案中載入Spring上下文
- XmlWebApplicationContext:從Web應用下的一個或多個xml配置檔案中載入Spring上下文
Bean的生命週期
- Spring例項化Bean
- Spring將值和Bean的引用注入到Bean對應屬性中
- 如果Bean實現了BeanNameAware介面,Spring將Bean的id傳給setBeanName()方法
- 如果Bean實現了BeanFactoryAware介面,Spring呼叫setBeanFactor()方法,將BeanFactory例項傳入
- 如果Bean實現了ApplicationContextAware介面,Spring呼叫setApplicationContext()方法,將Bean所在的應用上下文傳入
- 如果Bean實現了BeanPostProcessor介面,Spring呼叫postProcessBeforeInitialization()方法
- 如果Bean實現了InitializingBean介面或使用了init-method聲明瞭初始化方法,Spring呼叫afterPropertiesSet()方法
- 如果Bean實現了BeanPostProcessor介面,Spring呼叫postProcessAfterInitialization()方法
- Bean初始化完畢,可以進行使用,其將一直在應用上下文中駐留,直到該應用上下文銷燬
- 如果Bean實現了DesposableBean介面或使用了destroy-method聲明瞭銷燬方法,Spring將呼叫destroy()方法
Spring核心模組
Spring的模組依據其所屬的功能可以劃分為6類。
Spring核心容器
- core:Spring核心
- context:Spring容器
- beans:Spring的Bean工廠
- expression:Spring表示式語言
- context-support:Spring容器輔助支撐
Spring AOP
- aop:面向切面程式設計
- aspectJ:切面註解相關
資料訪問與整合
- JDBC:資料庫訪問相關
- JMS:訊息相關
- ORM:物件關係對映模型相關
- OXM:XML對映模型相關
- transaction:事務相關
- Messaging:訊息服務相關
Web與遠端呼叫
- Web MVC:Spring提供的MVC框架
- Web Servlet:Servlet相關
- WebSocket:Socket程式設計相關
Instrumentation
使用場景有限,暫時不需要了解
Test
Spring提供的測試框架
總結
本文從總的方向上對Spring相關的內容進行了介紹,並不涉及任何細節的東西。主要涉及Spring的優勢、Spring容器、Spring應用上下文、Spring生命週期、Spring專案的模組化。在接下來的文章中,將會通過示例的方式展示Spring每一項功能的使用。