歡迎你們關注個人微信公衆號,共同交流Java相關技術!java
使用Spring的目的
Spring是爲了解決企業級應用開發的複雜性而建立的,使用Spring能夠讓簡單的JavaBean實現以前只有EJB才能完成的事情。web
Spring如何下降Java開發的複雜性
- 最小侵入編程
- 經過面向接口和依賴注入實現鬆耦合
- 基於編程慣例和切面進行聲明式編程
- 經過模板減小樣板式代碼
Spring容器
在Spring應用中,再也不由對象自行建立或管理它們之間的依賴關係;Spring容器負責建立對象、裝配對象、配置它們並管理它們的整個生命週期。spring
容器是Spring框架的核心,是依賴注入和切面的基礎,其自帶了多個容器實現,這多個實現能夠歸類爲兩種不一樣的類型:數據庫
- Bean工廠,提供基本的依賴注入支持
- ApplicationContext,基於Bean工廠構建,提供應用框架級別的服務
ApplicationContext在實際的應用中更普遍、更受歡迎。express
應用上下文
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
使用場景有限,暫時不須要了解markdown
Test
Spring提供的測試框架app
總結
本文從總的方向上對Spring相關的內容進行了介紹,並不涉及任何細節的東西。主要涉及Spring的優點、Spring容器、Spring應用上下文、Spring生命週期、Spring項目的模塊化。在接下來的文章中,將會經過示例的方式展現Spring每一項功能的使用。框架