Spring 特性
目录
核心特性
-
IOC 容器(Ioc Containers)
-
Spring 事件(Events)
基于 Java 事件来进行扩展的,但是与 Java 的标准事件有一些区别
-
资源管理(Resource)
继承自 Java 的资源管理,部分 API 是借鉴了 Java 核心的底层 API 的一个实现
-
国际化(i18n)
Java 默认就支持国际化,Spring 的国际化也是 Java API 进行实践的
-
校验(Validation)
整合了 Bean Validation
-
数据绑定(Data Binding)
外面的属性和 Java 的 POJO 的 Setter、Getter 来进行一个数据上的转化和绑定
-
类型转换(Type Conversion)
-
Spring 表达式(Spring Express Language)
-
面向切面变成(AOP)
数据存储
-
JDBC
-
事务抽象
-
DAO 支持
-
O/R 映射
-
XML 编列
Web 技术
Web Servlet 技术栈【Spring 1-4的唯一支持】
-
Spring MVC【底层需要 Servlet 引擎来进行支撑】
-
WebSocket【Servlet 3.0 以后对 WebSocket 进行了支持,有了相关规范】
-
SockJS
Web Reactive 技术栈【Spring 5引入】
-
Spring WebFlux【默认情况下是 Netty 的 Web Server,也可以使用 Spring MVC 的引擎来实现】
-
WebClient【Spring 5.0 之前,有 RestTemplate 或者 HttpClient,一个同步的 Http 的执行客户端,WebClient 的引入,它把过去的同步执行变成异步回调的方式】
-
WebSocket
技术整合(Integration)
-
远程调用(Remoting)
-
RMI:Java 标准的远程方法调用
-
Hessian:社区开源的一个方案,比如 Dubbo,就是基于 Hessian 协议
-
-
Java 消息服务(JMS)
- 远程调用是同步的,消息服务是异步的
-
Java 连接架构(JCA)
-
Java 管理扩展(JMX)
-
Java 邮件客户端(Email)
-
本地任务(Tasks)
-
本地调度(Scheduling)
-
缓存抽象(Caching)
-
Spring 测试(Testing)
测试(Testing)
-
模拟对象
-
TestContext 框架
-
Spring MVC 测试
-
Web 测试客户端
Spring 模块化设计
-
spring-aop
-
spring-aspects
-
spring-context-indexer
-
spring-context-support
-
spring-context
-
spring-core
-
spring-expression
-
spring-instrument(Java 的 agent 的一个支持)
-
spring-jcl(Spring 5 开始支持的,帮助 Spring 统一日志管理)
-
spring-jdbc
-
spring-jms
-
spring-messaging
-
spring-orm
-
spring-oxm(xml 的序列化和反序列化)
-
spring-test
-
spring-tx
-
spring-web
-
spring-webflux
-
spring-webmvc
-
spring-websocket
Spring 编程模型
-
面向对象编程
-
契约接口:Aware、BeanPostProcessor …
-
设计模式:观察者模式、组合模式、模板模式 …
-
对象继承:Abstract*类
-
-
面向切面编程
-
动态代理:JdkDynamicAopProxy
-
字节码提升:ASM、CGLib、AspectJ …
-
-
面向元编程
-
注解:模式注解(@Component、@Service、@Repository …)
-
配置:Environment 抽象、PropertySources、BeanDefination …
-
泛型:GenericTypeResolver、ResolvableType …
-
-
函数驱动
-
函数接口:ApplicationEventPublisher
-
Reactive:Spring WebFlux
-
-
模块驱动
-
Maven Artifacts
-
OSGI Bundles
-
Java 9 Automatic Modules
-
Spring @Enable*
-
Ioc 主要实现策略
-
依赖查找
-
依赖注入
IOC 容器的职责
-
通用职责
-
依赖处理
-
依赖查找【主动的方式】
-
依赖注入
-
-
生命周期管理
-
容器
-
托管的资源(Java Beans 或其他资源)
-
-
配置
-
容器
-
外部化配置
-
托管的资源(Java Beans 或其他资源)
-
Ioc 容器的实现
-
Java SE
-
Java Beans
-
Java ServiceLoader SPI【Java 1.6 引入的】
-
JNDI
-
-
Java EE
-
EJB
-
Servlet
-
-
开源
-
Apache Avalon
-
Google Guice
-
Spring Framework
-
传统 IOC 容器的实现
-
Java Beans 作为 IOC 容器
-
特性
-
依赖查找
-
生命周期管理
-
配置元信息【譬如:反射以及反射对应的应用】
-
事件
-
自定义
-
资源管理
-
持久化
-
-
规范
-
JavaBeans
-
BeanContext
-
Spring 容器概述
-
Spring IOC 依赖查找
-
Spring IOC 依赖注入
-
Spring IOC 依赖来源
-
Spring IOC 配置元信息
-
Spring IOC 容器
-
Spring 应用上下文
-
使用 Spring IOC 容器
-
Spring IOC 容器生命周期
-
面试题精选
Spring IOC 依赖查找
-
根据 Bean 名称查找
-
实时查找
-
延迟查找
-
-
根据 Bean 类型查找
-
单个 Bean 对象
-
集合 Bean 对象
-
-
根据 Bean 名称 + 类型查找
-
根据 Java 注解查找
-
单个 Bean 对象
-
集合 Bean 对象
-
Spring IOC 依赖注入
-
根据 Bean 名称注入
-
根据 Bean 类型注入
-
单个 Bean 对象
-
集合 Bean 对象
-
-
注入容器内建 Bean 对象
-
注入非 Bean 对象
-
注入类型
-
实时注入
-
延迟注入
-
Spring IOC 依赖来源
-
自定义 Bean
-
容器内建 Bean 对象【Envirenment】
-
容器内建依赖【通过依赖注入的 Bean】
Spring IOC 配置元信息
-
Bean 定义配置
-
基于 XML 文件
-
基于 Properties 文件
-
基于 Java 注解
-
基于 Java API
-
-
IOC 容器配置
-
基于 XML 文件
-
基于 Java 注解
-
基于 Java API
-
-
外部化属性配置
- 基于 Java 注解
Spring IOC 容器
BeanFactory 和 ApplicationContext 谁才是 Spring IOC 容器
Spring 应用上下文
ApplicationContext 除了 IOC 容器角色,还提供
-
面向切面(AOP)
-
配置元信息(Configuration Metadata)
-
资源管理(Resources)
-
事件(Events)
-
国际化(i18n)
-
注解(Annotations)
-
Environment 抽象(Environment Abstraction)
使用 Spring IOC 容器
-
BeanFactory 是 Spring 底层的 IOC 容器
-
ApplicationContext 是具备应用特性的 BeanFactory 的超集
Spring IOC 容器生命周期
-
启动
-
运行
-
停止
Spring IOC 容器启动时做了那些准备
IOC 配置元信息读取和解析【XML 配置,注解等】、IOC 容器生命周期、Spring 事件发布、国际化等。