Spring的设计初衷(简化开发)四个基本策略
- 基于POJO的轻量级和最小侵入性编程
- 通过依赖注入和面向接口松耦合
- 基于切面和惯性进行声明式编程
- 通过切面和模板减少样板式代码
spring的编程思想
- OOP :Object Oriented Programming (面向对象编程)用程序归纳总结生活中的一切事物。(封装,继承,多态)。
- BOP:Bean Oriented Programming (面向bean编程)面向Bean设计程序,解放程序员。(一切从Bean开始)。
- AOP:Aspect Oriented Programming(面向切面编程)找出多个类中有一定规律的代码,开发时拆开,运行时合并。即面向规则编程(解耦,专人做专事)。
- IOC:Inversion of Control(控制翻转)将new对象的动作交给SPring管理,并由Spring保存已创建的对象(IOC容器)(转交控制权)。
- DI/DL:Dependency Injection(依赖注入)或者Dependency Lookup(依赖查找)。依赖注入和依赖查找,spring不仅保存自己创建的对象,而且保存对象与对象之间的关系。注入即赋值,主要三种方式构造方法、set方法、直接赋值。(自动赋值)。
DI和AOP都依赖IOC
spring注解编程
V1(注解驱动启蒙时代)-> v2(注解驱动过度时代)-> V2.5(引入了新的骨架Annotation) -> V3(注解驱动黄金时代) -> V4(注解驱动完善时代) -> V5(注解驱动的成熟时代)。
Spring系统架构
spring系统架构的核心模块
- spring-core :依赖注入IOC与DI的最基本实现。
- spring-beans:Bean工厂与Bean的装配。
- spring-context:定义基础的Spring的Context上下文IOc容器。
- spring-context-support:对springIOC容器的扩展支持,以及IOC子容器。
- spring-context-indexer:spring的类管理组件和Classpath扫描。
- spring-expression:Spring表达式语言。
spring系统架构的切面编程模块
- spring-aop:面向切面编程的应用模块,整合Asm。CGLib,JDKProxy。
- spring-aspects:集成AspectJ,Aop应用框架。
- spring-instrument:动态Class Loading模块。
spring系统架构的集成模块
- spring-jdbc:Spring提供的JDBC抽象框架的主要实现模块,用于简化Spring JDBC操作。
- spring-tx:Spring JDBC事务控制实现模块。
- spring-orm:主要集成Hibernate,java Persistence API(JPA)和Java Data Objects(JDO)。
- spring-oxm:将java对象映射成XML数据,或者将XML数据映射成java对象。
- spring-jms:Java Messaging Service能够发送和接收信息。
spring的Web模块
- spring-web:提供了最基础的Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IOC容器。
- spring-webmcv:实现了Spring MVC(model-view-Controller)的Web应用。
- spring-websocket:主要是于Web前端的全双通讯的协议。
- spring-webflux:一个新的非阻塞函数式Reactive Web框架,可以用来建立异步的,非阻塞,事件驱动的服务。
spring的通信报文模块
- spring-messaging:从spring4开始新加入的一个模块,主要职责是为spring框架集成一些基础的报文传送应用。
spring的集成测试模块
- spring-test:主要集成测试提供支持。
spring的集成兼容模块
- spring-framework-bom:Bill of Materials解决Spring的不同模块依赖版本不同的问题。
spring命名规则
- Snapchat:快照版:尚不稳定,尚处于开发中的版本。
- Release:稳定版:功能相对稳定,可以对外发行,但有时间限制。
- GA:正式版:代表广泛可用的稳定版。
- M:里程碑版:具有一些全新的功能或具有里程碑意义的版本。
- Rc:终测版:Release Candidate(最终测试),即作为正式版发布。