小马哥 Spring编程思想笔记-第一章
-
Spring 特性总览
- 核心特性
-
IOC 容器(IoC Container)
-
Spring 事件(Events)
-
资源管理(Resources)
-
国际化(i18n)
-
校验(Validation)
-
数据绑定(Data Binding)
-
类型转换(Type Conversion)
-
Spring 表达式(Spring Express Language)
-
面向切面编程(AOP)
-
- 数据存储(Data Access)
- JDBC
- 事务抽象(Transactions)
- D AO支持(DAO Support)
- O/R映射 (O/R Mapping)
- XML 编列(XML Marshalling)
- Web 技术
1. Web Servlet 技术栈
1. Spring MVC
2. bSocket
3. SockJS
2. Web Reactive 技术栈
1. Spring WebFlux
2. WebClient
3. ebSocket - 技术整合(Integration)
- 远程调用(Remoting)
- Java消息服务(JMS)
- Java连接架构(JCA)
- Java管理扩展(JMX)
- Java邮件客户端(Email)
- 本地任务(Tasks)
- 本地调度(Scheduling)
- 缓存抽象(Caching)
- Spring测试(Testing)
- 测试(Testing)
- 模拟对象(Mock Objects)
- TestContext 框架(TestContext Framework)
- Spring MVC 测试(Spring MVC Test)
- Web 测试客户端 (WebTestClient)
- 核心特性
-
Spring 模块化设计
- spring-aop
- spring-aspects
- spring-context-indexer
- spring-context-support
- spring-context
- spring-core
- spring-expression
- spring-instrument
- spring-jcl
- spring-jdbc
- spring-jms
- spring-messaging
- spring-orm
- spring-oxm
- spring-test
- spring-tx
- spring-web
- spring-webflux
- spring-webmvc
- spring-websocket
-
Spring 编程模型
- 面向对象编程
- 契约接口: Aware、BeanPostProcessor…
- 设计模式: 观察者模式、组合模式、模板模式…
- 对象继承: Abstract*类
- 面向切面编程
- 动态代理: JdkDynamicAopProxy
- 字节码提升: ASM、CGLib、AspectJ…
- 面向元编程
- 注解: 模式注解(@Component、@Service、@Respository)
- 配置: Environment抽象、PropertySources、BeanDefinition
- 泛型: GenericTypeResolver、ResolvableType…
- 函数驱动
- 函数接口: ApplicationEventPublisher
- Reactive: Spring WebFlux
- 模块驱动
- Maven Artifaces
- OSGI Bundles
- Java 9 Automatic Modules
- Spring @Enable*
- 面向对象编程
-
Spring 核心价值
- 生态系统
Spring Boot
Spring cloud
Spring Security
Spring Data
其他 - API抽象设计
AOP抽象
事务抽象
Environment抽象
生命周期 - 编程模型
面向对象编程
面向切面编程
面向元编程
面向模块编程
面向函数编程 - 设计思想
OOP(Object-Oriented Programming)
IoC/DI
DDD(Domain-Driven Development)
TDD(Test-Driven Development)
EDP(Event-Driven Programing)
FP(Functional Programing) - 设计模式
- 专属模式
前缀模式
Enable模式
Configurable模式 - 后缀模式
处理器模式
Processor
Resolver
Handler
意识模式
Aware
配置器模式
Configuror
选择器模式 - 传统GoF23
- 创建模式
抽象工厂(Abstract Factory)
构造器(Builder)
工厂方法(Factory Method)
原型(Prototype)
单体(Singleton) - 结构模式
适配器(Adapter)
桥连(Bridge)
组合(Composite)
装饰器(Decorator)
门面(Facade)
轻量级(Flyweight)
代理(Proxy) - 行为模式
责任链(Chain of responsibility)
命令(Command)
拦截器(Interpreter)
迭代器(Iterator)
调解者(Mediator)
备忘(Memento)
观察者(Observer)
状态(State)
策略(Strategy)
模板方法(Template Method)
- 创建模式
- 专属模式
- 生态系统
-
面试题精选
-
什么是 Spring Framework?
Spring使创建Java企业应用程序变得容易。它提供了在企业环境中使用Java语言所需的一切,支持将Groovy和Kotlin作为JVM上的替代语言,并具有根据应用程序的需要创建多种体系结构的灵活性。 -
Spring Framework 有哪些核心模块?
- spring-core: Spring基础API模块,如资源管理,泛型处理
- spring-beans: Spring Bean相关,如依赖查找,依赖注入
- spring-aop: Spring AOP处理,如动态代理,AOP字节码提升
- spring-context: 时间 驱动,注解驱动,模块驱动
- spring-expression: Spring表达式语言模块
- Spring Framework的优势和不足是什么?
-
-
重新认识IoC
-
IoC容器的职责
- 通用职责
- 依赖处理
依赖查找
依赖注入 - 生命周期管理
容器
托管的资源(Java Beans或其他资源) - 配置
容器
外部化配置
托管的资源(Java Beans或其他资源)
-
IoC容器的实现
- 特性
依赖查找
生命周期管理
配置元信息
事件
自定义
资源管理
持久化 - 规范
JavaBeans
BeanContext
轻量级IoC容器
- 特性
-
-
面试题精选
- 什么是IoC?
简单的说 IoC是反转控制,类似于好莱坞原则,主要有依赖查找和依赖注入实现 - 依赖查找和依赖注入的区别
依赖查找是主动或手动的依赖查找方式,通常需要依赖容器或标准API实现.而依赖注入则是手动或者自动依赖绑定的方式,无需依赖特定的容器和API - Spring作为IoC容器有什么优势
典型的IoC管理,依赖查找和依赖注入
AOP抽象
事务抽象
事件机制
SPI扩展
强大的第三方整合
易测试性
更好的面向对象
- 什么是IoC?
-
OOP与AOP区别
- 与OOP对比,传统的OOP开发中的代码逻辑是自上而下,在这些自上而下的过程会产生写横切性的问题,而这些横切性的问题又与我们主业务逻辑关系不大,会散落在代码的各个地方,造成难以维护.
- AOP的编程思想就是把这些横切性的问题和主业务逻辑进行分离,从而起到解耦的目的.
-
AOP底层实现原理
- Java动态代理
- CGLIB